<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE CPP, DeriveFunctor, GADTs, PatternSynonyms #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE LambdaCase #-}</span><span>
</span><span id="line-3"></span><span>
</span><span id="line-4"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-5"></span><span class="hs-comment">--</span><span>
</span><span id="line-6"></span><span class="hs-comment">-- Pretty-printing of Cmm as C, suitable for feeding gcc</span><span>
</span><span id="line-7"></span><span class="hs-comment">--</span><span>
</span><span id="line-8"></span><span class="hs-comment">-- (c) The University of Glasgow 2004-2006</span><span>
</span><span id="line-9"></span><span class="hs-comment">--</span><span>
</span><span id="line-10"></span><span class="hs-comment">-- Print Cmm as real C, for -fvia-C</span><span>
</span><span id="line-11"></span><span class="hs-comment">--</span><span>
</span><span id="line-12"></span><span class="hs-comment">-- See wiki:commentary/compiler/backends/ppr-c</span><span>
</span><span id="line-13"></span><span class="hs-comment">--</span><span>
</span><span id="line-14"></span><span class="hs-comment">-- This is simpler than the old PprAbsC, because Cmm is &quot;macro-expanded&quot;</span><span>
</span><span id="line-15"></span><span class="hs-comment">-- relative to the old AbstractC, and many oddities/decorations have</span><span>
</span><span id="line-16"></span><span class="hs-comment">-- disappeared from the data type.</span><span>
</span><span id="line-17"></span><span class="hs-comment">--</span><span>
</span><span id="line-18"></span><span class="hs-comment">-- This code generator is only supported in unregisterised mode.</span><span>
</span><span id="line-19"></span><span class="hs-comment">--</span><span>
</span><span id="line-20"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-21"></span><span>
</span><span id="line-22"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.CmmToC</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-23"></span><span>        </span><span class="annot"><a href="GHC.CmmToC.html#writeC"><span class="hs-identifier">writeC</span></a></span><span>
</span><span id="line-24"></span><span>  </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-28"></span><span class="hs-comment">-- Cmm stuff</span><span>
</span><span id="line-29"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-30"></span><span>
</span><span id="line-31"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html"><span class="hs-identifier">GHC.Cmm.BlockId</span></a></span><span>
</span><span id="line-32"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html"><span class="hs-identifier">GHC.Cmm.CLabel</span></a></span><span>
</span><span id="line-33"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html"><span class="hs-identifier">GHC.Types.ForeignCall</span></a></span><span>
</span><span id="line-34"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.html"><span class="hs-identifier">GHC.Cmm</span></a></span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#pprBBlock"><span class="hs-identifier">pprBBlock</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-35"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Ppr.html"><span class="hs-identifier">GHC.Cmm.Ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- For Outputable instances</span><span>
</span><span id="line-36"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Block</span></a></span><span>
</span><span id="line-37"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Collections.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Collections</span></a></span><span>
</span><span id="line-38"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Graph.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Graph</span></a></span><span>
</span><span id="line-39"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html"><span class="hs-identifier">GHC.Cmm.Utils</span></a></span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Switch.html"><span class="hs-identifier">GHC.Cmm.Switch</span></a></span><span>
</span><span id="line-41"></span><span>
</span><span id="line-42"></span><span class="hs-comment">-- Utils</span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.CmmToAsm.CPrim.html"><span class="hs-identifier">GHC.CmmToAsm.CPrim</span></a></span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html"><span class="hs-identifier">GHC.Driver.Session</span></a></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span>
</span><span id="line-46"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-47"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#"><span class="hs-identifier">GHC.Platform</span></a></span><span>
</span><span id="line-48"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Set.html"><span class="hs-identifier">GHC.Types.Unique.Set</span></a></span><span>
</span><span id="line-49"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.FM.html"><span class="hs-identifier">GHC.Types.Unique.FM</span></a></span><span>
</span><span id="line-50"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html"><span class="hs-identifier">GHC.Types.Unique</span></a></span><span>
</span><span id="line-51"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html"><span class="hs-identifier">GHC.Utils.Misc</span></a></span><span>
</span><span id="line-52"></span><span>
</span><span id="line-53"></span><span class="hs-comment">-- The rest</span><span>
</span><span id="line-54"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.html#"><span class="hs-identifier">Data.ByteString</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier">ByteString</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-55"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.html#"><span class="hs-identifier">Data.ByteString</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">BS</span></span><span>
</span><span id="line-56"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Control.Monad.ST.html#"><span class="hs-identifier">Control.Monad.ST</span></a></span><span>
</span><span id="line-57"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Bits.html#"><span class="hs-identifier">Data.Bits</span></a></span><span>
</span><span id="line-58"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Char.html#"><span class="hs-identifier">Data.Char</span></a></span><span>
</span><span id="line-59"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.html#"><span class="hs-identifier">Data.List</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.OldList.html#intersperse"><span class="hs-identifier">intersperse</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-60"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.html#"><span class="hs-identifier">Data.Map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier">Map</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-61"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Word.html#"><span class="hs-identifier">Data.Word</span></a></span><span>
</span><span id="line-62"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/System.IO.html#"><span class="hs-identifier">System.IO</span></a></span><span>
</span><span id="line-63"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.html#"><span class="hs-identifier">Data.Map</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Map</span></span><span>
</span><span id="line-64"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Control.Monad.html#"><span class="hs-identifier">Control.Monad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#ap"><span class="hs-identifier">ap</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-65"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../array/src/Data.Array.Unsafe.html#"><span class="hs-identifier">Data.Array.Unsafe</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">U</span></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../array/src/Data.Array.Base.html#castSTUArray"><span class="hs-identifier">castSTUArray</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-66"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../array/src/Data.Array.ST.html#"><span class="hs-identifier">Data.Array.ST</span></a></span><span>
</span><span id="line-67"></span><span>
</span><span id="line-68"></span><span class="hs-comment">-- --------------------------------------------------------------------------</span><span>
</span><span id="line-69"></span><span class="hs-comment">-- Top level</span><span>
</span><span id="line-70"></span><span>
</span><span id="line-71"></span><span class="annot"><a href="GHC.CmmToC.html#writeC"><span class="hs-identifier hs-type">writeC</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.Handle.Types.html#Handle"><span class="hs-identifier hs-type">Handle</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmGroup"><span class="hs-identifier hs-type">RawCmmGroup</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-72"></span><span id="writeC"><span class="annot"><span class="annottext">writeC :: DynFlags -&gt; Handle -&gt; RawCmmGroup -&gt; IO ()
</span><a href="GHC.CmmToC.html#writeC"><span class="hs-identifier hs-var hs-var">writeC</span></a></span></span><span> </span><span id="local-6989586621681018620"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018620"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018619"><span class="annot"><span class="annottext">Handle
</span><a href="#local-6989586621681018619"><span class="hs-identifier hs-var">handle</span></a></span></span><span> </span><span id="local-6989586621681018618"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681018618"><span class="hs-identifier hs-var">cmm</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Handle -&gt; SDoc -&gt; IO ()
</span><a href="GHC.Utils.Outputable.html#printForC"><span class="hs-identifier hs-var">printForC</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018620"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Handle
</span><a href="#local-6989586621681018619"><span class="hs-identifier hs-var">handle</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; RawCmmGroup -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprC"><span class="hs-identifier hs-var">pprC</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018620"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681018618"><span class="hs-identifier hs-var">cmm</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#blankLine"><span class="hs-identifier hs-var">blankLine</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-73"></span><span>
</span><span id="line-74"></span><span class="hs-comment">-- --------------------------------------------------------------------------</span><span>
</span><span id="line-75"></span><span class="hs-comment">-- Now do some real work</span><span>
</span><span id="line-76"></span><span class="hs-comment">--</span><span>
</span><span id="line-77"></span><span class="hs-comment">-- for fun, we could call cmmToCmm over the tops...</span><span>
</span><span id="line-78"></span><span class="hs-comment">--</span><span>
</span><span id="line-79"></span><span>
</span><span id="line-80"></span><span class="annot"><a href="GHC.CmmToC.html#pprC"><span class="hs-identifier hs-type">pprC</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmGroup"><span class="hs-identifier hs-type">RawCmmGroup</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-81"></span><span id="pprC"><span class="annot"><span class="annottext">pprC :: DynFlags -&gt; RawCmmGroup -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprC"><span class="hs-identifier hs-var hs-var">pprC</span></a></span></span><span> </span><span id="local-6989586621681018613"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018613"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018612"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681018612"><span class="hs-identifier hs-var">tops</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
forall a. a -&gt; [a] -&gt; [a]
</span><a href="../../base/src/Data.OldList.html#intersperse"><span class="hs-identifier hs-var">intersperse</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#blankLine"><span class="hs-identifier hs-var">blankLine</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; [SDoc]) -&gt; [SDoc] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">(RawCmmDecl -&gt; SDoc) -&gt; RawCmmGroup -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; RawCmmDecl -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprTop"><span class="hs-identifier hs-var">pprTop</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018613"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681018612"><span class="hs-identifier hs-var">tops</span></a></span><span>
</span><span id="line-82"></span><span>
</span><span id="line-83"></span><span class="hs-comment">--</span><span>
</span><span id="line-84"></span><span class="hs-comment">-- top level procs</span><span>
</span><span id="line-85"></span><span class="hs-comment">--</span><span>
</span><span id="line-86"></span><span class="annot"><a href="GHC.CmmToC.html#pprTop"><span class="hs-identifier hs-type">pprTop</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-87"></span><span id="pprTop"><span class="annot"><span class="annottext">pprTop :: DynFlags -&gt; RawCmmDecl -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprTop"><span class="hs-identifier hs-var hs-var">pprTop</span></a></span></span><span> </span><span id="local-6989586621681018609"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018609"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-88"></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-type">CmmProc</span></a></span><span> </span><span id="local-6989586621681018607"><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681018607"><span class="hs-identifier hs-var">infos</span></a></span></span><span> </span><span id="local-6989586621681018606"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018606"><span class="hs-identifier hs-var">clbl</span></a></span></span><span> </span><span id="local-6989586621681018605"><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681018605"><span class="hs-identifier hs-var">_in_live_regs</span></a></span></span><span> </span><span id="local-6989586621681018604"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681018604"><span class="hs-identifier hs-var">graph</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-89"></span><span>    </span><span class="hs-special">(</span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">KeyOf LabelMap -&gt; LabelMap RawCmmStatics -&gt; Maybe RawCmmStatics
forall (map :: * -&gt; *) a.
IsMap map =&gt;
KeyOf map -&gt; map a -&gt; Maybe a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapLookup"><span class="hs-identifier hs-var">mapLookup</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmGraph -&gt; BlockId
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmGraph n -&gt; BlockId
</span><a href="GHC.Cmm.html#g_entry"><span class="hs-identifier hs-var hs-var">g_entry</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681018604"><span class="hs-identifier hs-var">graph</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681018607"><span class="hs-identifier hs-var">infos</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-90"></span><span>       </span><span class="annot"><span class="annottext">Maybe RawCmmStatics
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-91"></span><span>       </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticsRaw"><span class="hs-identifier hs-type">CmmStaticsRaw</span></a></span><span> </span><span id="local-6989586621681018599"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018599"><span class="hs-identifier hs-var">info_clbl</span></a></span></span><span> </span><span id="local-6989586621681018598"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018598"><span class="hs-identifier hs-var">info_dat</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-92"></span><span>           </span><span class="annot"><span class="annottext">Platform -&gt; [CmmStatic] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprDataExterns"><span class="hs-identifier hs-var">pprDataExterns</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018596"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018598"><span class="hs-identifier hs-var">info_dat</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-93"></span><span>           </span><span class="annot"><span class="annottext">DynFlags -&gt; Bool -&gt; CLabel -&gt; [CmmStatic] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprWordArray"><span class="hs-identifier hs-var">pprWordArray</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018609"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681018594"><span class="hs-identifier hs-var">info_is_in_rodata</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018599"><span class="hs-identifier hs-var">info_clbl</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018598"><span class="hs-identifier hs-var">info_dat</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-94"></span><span>    </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span>
</span><span id="line-95"></span><span>           </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#blankLine"><span class="hs-identifier hs-var">blankLine</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-96"></span><span>           </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018593"><span class="hs-identifier hs-var">extern_decls</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-97"></span><span>           </span><span class="hs-special">(</span><span class="hs-keyword">if</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#externallyVisibleCLabel"><span class="hs-identifier hs-var">externallyVisibleCLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018606"><span class="hs-identifier hs-var">clbl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-98"></span><span>                    </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.CmmToC.html#mkFN_"><span class="hs-identifier hs-var">mkFN_</span></a></span><span> </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.CmmToC.html#mkIF_"><span class="hs-identifier hs-var">mkIF_</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018606"><span class="hs-identifier hs-var">clbl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#lbrace"><span class="hs-identifier hs-var">lbrace</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-99"></span><span>           </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018585"><span class="hs-identifier hs-var">temp_decls</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-100"></span><span>           </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmBlock -&gt; SDoc) -&gt; [CmmBlock] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmBlock -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBBlock"><span class="hs-identifier hs-var">pprBBlock</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018609"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681018583"><span class="hs-identifier hs-var">blocks</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-101"></span><span>           </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#rbrace"><span class="hs-identifier hs-var">rbrace</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-102"></span><span>    </span><span class="hs-special">)</span><span>
</span><span id="line-103"></span><span>    </span><span class="hs-keyword">where</span><span>
</span><span id="line-104"></span><span>        </span><span class="hs-comment">-- info tables are always in .rodata</span><span>
</span><span id="line-105"></span><span>        </span><span id="local-6989586621681018594"><span class="annot"><span class="annottext">info_is_in_rodata :: Bool
</span><a href="#local-6989586621681018594"><span class="hs-identifier hs-var hs-var">info_is_in_rodata</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-106"></span><span>        </span><span id="local-6989586621681018583"><span class="annot"><span class="annottext">blocks :: [CmmBlock]
</span><a href="#local-6989586621681018583"><span class="hs-identifier hs-var hs-var">blocks</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmGraph -&gt; [CmmBlock]
</span><a href="GHC.Cmm.Utils.html#toBlockListEntryFirst"><span class="hs-identifier hs-var">toBlockListEntryFirst</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681018604"><span class="hs-identifier hs-var">graph</span></a></span><span>
</span><span id="line-107"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621681018585"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018585"><span class="hs-identifier hs-var">temp_decls</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018593"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018593"><span class="hs-identifier hs-var">extern_decls</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; [CmmBlock] -&gt; (SDoc, SDoc)
</span><a href="GHC.CmmToC.html#pprTempAndExternDecls"><span class="hs-identifier hs-var">pprTempAndExternDecls</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018596"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681018583"><span class="hs-identifier hs-var">blocks</span></a></span><span>
</span><span id="line-108"></span><span>
</span><span id="line-109"></span><span>
</span><span id="line-110"></span><span>  </span><span class="hs-comment">-- Chunks of static data.</span><span>
</span><span id="line-111"></span><span>
</span><span id="line-112"></span><span>  </span><span class="hs-comment">-- We only handle (a) arrays of word-sized things and (b) strings.</span><span>
</span><span id="line-113"></span><span>
</span><span id="line-114"></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-type">CmmData</span></a></span><span> </span><span id="local-6989586621681018578"><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681018578"><span class="hs-identifier hs-var">section</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticsRaw"><span class="hs-identifier hs-type">CmmStaticsRaw</span></a></span><span> </span><span id="local-6989586621681018577"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018577"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmString"><span class="hs-identifier hs-type">CmmString</span></a></span><span> </span><span id="local-6989586621681018575"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681018575"><span class="hs-identifier hs-var">str</span></a></span></span><span class="hs-special">]</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-115"></span><span>    </span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExternDecl"><span class="hs-identifier hs-var">pprExternDecl</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018596"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018577"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-116"></span><span>    </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="hs-special">[</span><span>
</span><span id="line-117"></span><span>      </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLocalness"><span class="hs-identifier hs-var">pprLocalness</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018577"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprConstness"><span class="hs-identifier hs-var">pprConstness</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Section -&gt; Bool
</span><a href="#local-6989586621681018570"><span class="hs-identifier hs-var">isSecConstant</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681018578"><span class="hs-identifier hs-var">section</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;char &quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018577"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-118"></span><span>      </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;[] = &quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ByteString -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprStringInCStyle"><span class="hs-identifier hs-var">pprStringInCStyle</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681018575"><span class="hs-identifier hs-var">str</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-119"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-120"></span><span>
</span><span id="line-121"></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-type">CmmData</span></a></span><span> </span><span id="local-6989586621681018566"><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681018566"><span class="hs-identifier hs-var">section</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticsRaw"><span class="hs-identifier hs-type">CmmStaticsRaw</span></a></span><span> </span><span id="local-6989586621681018565"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018565"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmUninitialised"><span class="hs-identifier hs-type">CmmUninitialised</span></a></span><span> </span><span id="local-6989586621681018563"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018563"><span class="hs-identifier hs-var">size</span></a></span></span><span class="hs-special">]</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-122"></span><span>    </span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExternDecl"><span class="hs-identifier hs-var">pprExternDecl</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018596"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018565"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-123"></span><span>    </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="hs-special">[</span><span>
</span><span id="line-124"></span><span>      </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLocalness"><span class="hs-identifier hs-var">pprLocalness</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018565"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprConstness"><span class="hs-identifier hs-var">pprConstness</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Section -&gt; Bool
</span><a href="#local-6989586621681018570"><span class="hs-identifier hs-var">isSecConstant</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681018566"><span class="hs-identifier hs-var">section</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;char &quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018565"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-125"></span><span>      </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018563"><span class="hs-identifier hs-var">size</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-126"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-127"></span><span>
</span><span id="line-128"></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-type">CmmData</span></a></span><span> </span><span id="local-6989586621681018560"><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681018560"><span class="hs-identifier hs-var">section</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticsRaw"><span class="hs-identifier hs-type">CmmStaticsRaw</span></a></span><span> </span><span id="local-6989586621681018559"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018559"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681018558"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018558"><span class="hs-identifier hs-var">lits</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-129"></span><span>    </span><span class="annot"><span class="annottext">Platform -&gt; [CmmStatic] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprDataExterns"><span class="hs-identifier hs-var">pprDataExterns</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018596"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018558"><span class="hs-identifier hs-var">lits</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-130"></span><span>    </span><span class="annot"><span class="annottext">DynFlags -&gt; Bool -&gt; CLabel -&gt; [CmmStatic] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprWordArray"><span class="hs-identifier hs-var">pprWordArray</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018609"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Section -&gt; Bool
</span><a href="#local-6989586621681018570"><span class="hs-identifier hs-var">isSecConstant</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681018560"><span class="hs-identifier hs-var">section</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018559"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018558"><span class="hs-identifier hs-var">lits</span></a></span><span>
</span><span id="line-131"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-132"></span><span>    </span><span id="local-6989586621681018570"><span class="annot"><span class="annottext">isSecConstant :: Section -&gt; Bool
</span><a href="#local-6989586621681018570"><span class="hs-identifier hs-var hs-var">isSecConstant</span></a></span></span><span> </span><span id="local-6989586621681018557"><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681018557"><span class="hs-identifier hs-var">section</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Section -&gt; SectionProtection
</span><a href="GHC.Cmm.html#sectionProtection"><span class="hs-identifier hs-var">sectionProtection</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681018557"><span class="hs-identifier hs-var">section</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-133"></span><span>      </span><span class="annot"><span class="annottext">SectionProtection
</span><a href="GHC.Cmm.html#ReadOnlySection"><span class="hs-identifier hs-var">ReadOnlySection</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-134"></span><span>      </span><span class="annot"><span class="annottext">SectionProtection
</span><a href="GHC.Cmm.html#WriteProtectedSection"><span class="hs-identifier hs-var">WriteProtectedSection</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-135"></span><span>      </span><span class="annot"><span class="annottext">SectionProtection
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-136"></span><span>    </span><span id="local-6989586621681018596"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018596"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018609"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-137"></span><span>
</span><span id="line-138"></span><span class="hs-comment">-- --------------------------------------------------------------------------</span><span>
</span><span id="line-139"></span><span class="hs-comment">-- BasicBlocks are self-contained entities: they always end in a jump.</span><span>
</span><span id="line-140"></span><span class="hs-comment">--</span><span>
</span><span id="line-141"></span><span class="hs-comment">-- Like nativeGen/AsmCodeGen, we could probably reorder blocks to turn</span><span>
</span><span id="line-142"></span><span class="hs-comment">-- as many jumps as possible into fall throughs.</span><span>
</span><span id="line-143"></span><span class="hs-comment">--</span><span>
</span><span id="line-144"></span><span>
</span><span id="line-145"></span><span class="annot"><a href="GHC.CmmToC.html#pprBBlock"><span class="hs-identifier hs-type">pprBBlock</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-146"></span><span id="pprBBlock"><span class="annot"><span class="annottext">pprBBlock :: DynFlags -&gt; CmmBlock -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBBlock"><span class="hs-identifier hs-var hs-var">pprBBlock</span></a></span></span><span> </span><span id="local-6989586621681018552"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018552"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018551"><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681018551"><span class="hs-identifier hs-var">block</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-147"></span><span>  </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBlockId"><span class="hs-identifier hs-var">pprBlockId</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmBlock -&gt; BlockId
forall (thing :: Extensibility -&gt; Extensibility -&gt; *)
       (x :: Extensibility).
NonLocal thing =&gt;
thing C x -&gt; BlockId
</span><a href="GHC.Cmm.Dataflow.Graph.html#entryLabel"><span class="hs-identifier hs-var">entryLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681018551"><span class="hs-identifier hs-var">block</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#colon"><span class="hs-identifier hs-var">colon</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-148"></span><span>  </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmNode O O -&gt; SDoc) -&gt; [CmmNode O O] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmNode O O -&gt; SDoc
forall (e :: Extensibility) (x :: Extensibility).
DynFlags -&gt; CmmNode e x -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprStmt"><span class="hs-identifier hs-var">pprStmt</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018552"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Block CmmNode O O -&gt; [CmmNode O O]
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
Block n O O -&gt; [n O O]
</span><a href="GHC.Cmm.Dataflow.Block.html#blockToList"><span class="hs-identifier hs-var">blockToList</span></a></span><span> </span><span class="annot"><span class="annottext">Block CmmNode O O
</span><a href="#local-6989586621681018544"><span class="hs-identifier hs-var">nodes</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmNode O C -&gt; SDoc
forall (e :: Extensibility) (x :: Extensibility).
DynFlags -&gt; CmmNode e x -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprStmt"><span class="hs-identifier hs-var">pprStmt</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018552"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmNode O C
</span><a href="#local-6989586621681018543"><span class="hs-identifier hs-var">last</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-149"></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-150"></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmNode C O
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018544"><span class="annot"><span class="annottext">Block CmmNode O O
</span><a href="#local-6989586621681018544"><span class="hs-identifier hs-var">nodes</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018543"><span class="annot"><span class="annottext">CmmNode O C
</span><a href="#local-6989586621681018543"><span class="hs-identifier hs-var">last</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; (CmmNode C O, Block CmmNode O O, CmmNode O C)
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
Block n C C -&gt; (n C O, Block n O O, n O C)
</span><a href="GHC.Cmm.Dataflow.Block.html#blockSplit"><span class="hs-identifier hs-var">blockSplit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681018551"><span class="hs-identifier hs-var">block</span></a></span><span>
</span><span id="line-151"></span><span>
</span><span id="line-152"></span><span class="hs-comment">-- --------------------------------------------------------------------------</span><span>
</span><span id="line-153"></span><span class="hs-comment">-- Info tables. Just arrays of words.</span><span>
</span><span id="line-154"></span><span class="hs-comment">-- See codeGen/ClosureInfo, and nativeGen/PprMach</span><span>
</span><span id="line-155"></span><span>
</span><span id="line-156"></span><span class="annot"><a href="GHC.CmmToC.html#pprWordArray"><span class="hs-identifier hs-type">pprWordArray</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmStatic"><span class="hs-identifier hs-type">CmmStatic</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-157"></span><span id="pprWordArray"><span class="annot"><span class="annottext">pprWordArray :: DynFlags -&gt; Bool -&gt; CLabel -&gt; [CmmStatic] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprWordArray"><span class="hs-identifier hs-var hs-var">pprWordArray</span></a></span></span><span> </span><span id="local-6989586621681018541"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018541"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018540"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681018540"><span class="hs-identifier hs-var">is_ro</span></a></span></span><span> </span><span id="local-6989586621681018539"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018539"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681018538"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018538"><span class="hs-identifier hs-var">ds</span></a></span></span><span>
</span><span id="line-158"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-comment">-- TODO: align closures only</span><span>
</span><span id="line-159"></span><span>    </span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExternDecl"><span class="hs-identifier hs-var">pprExternDecl</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018537"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018539"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-160"></span><span>    </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLocalness"><span class="hs-identifier hs-var">pprLocalness</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018539"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprConstness"><span class="hs-identifier hs-var">pprConstness</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681018540"><span class="hs-identifier hs-var">is_ro</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgWord&quot;</span></span><span>
</span><span id="line-161"></span><span>         </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#space"><span class="hs-identifier hs-var">space</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018539"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;[]&quot;</span></span><span>
</span><span id="line-162"></span><span>         </span><span class="hs-comment">-- See Note [StgWord alignment]</span><span>
</span><span id="line-163"></span><span>         </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAlignment"><span class="hs-identifier hs-var">pprAlignment</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018537"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-164"></span><span>         </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;= {&quot;</span></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-165"></span><span>    </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.CmmToC.html#commafy"><span class="hs-identifier hs-var">commafy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; [CmmStatic] -&gt; [SDoc]
</span><a href="GHC.CmmToC.html#pprStatics"><span class="hs-identifier hs-var">pprStatics</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018541"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018538"><span class="hs-identifier hs-var">ds</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-166"></span><span>    </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;};&quot;</span></span><span>
</span><span id="line-167"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-168"></span><span>    </span><span id="local-6989586621681018537"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018537"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018541"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-169"></span><span>
</span><span id="line-170"></span><span class="annot"><a href="GHC.CmmToC.html#pprAlignment"><span class="hs-identifier hs-type">pprAlignment</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-171"></span><span id="pprAlignment"><span class="annot"><span class="annottext">pprAlignment :: Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAlignment"><span class="hs-identifier hs-var hs-var">pprAlignment</span></a></span></span><span> </span><span id="local-6989586621681018531"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018531"><span class="hs-identifier hs-var">words</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-172"></span><span>     </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;__attribute__((aligned(&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; Int
</span><a href="GHC.Cmm.Type.html#widthInBytes"><span class="hs-identifier hs-var">widthInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018531"><span class="hs-identifier hs-var">words</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)))&quot;</span></span><span>
</span><span id="line-173"></span><span>
</span><span id="line-174"></span><span class="hs-comment">-- Note [StgWord alignment]</span><span>
</span><span id="line-175"></span><span class="hs-comment">-- C codegen builds static closures as StgWord C arrays (pprWordArray).</span><span>
</span><span id="line-176"></span><span class="hs-comment">-- Their real C type is 'StgClosure'. Macros like UNTAG_CLOSURE assume</span><span>
</span><span id="line-177"></span><span class="hs-comment">-- pointers to 'StgClosure' are aligned at pointer size boundary:</span><span>
</span><span id="line-178"></span><span class="hs-comment">--  4 byte boundary on 32 systems</span><span>
</span><span id="line-179"></span><span class="hs-comment">--  and 8 bytes on 64-bit systems</span><span>
</span><span id="line-180"></span><span class="hs-comment">-- see TAG_MASK and TAG_BITS definition and usage.</span><span>
</span><span id="line-181"></span><span class="hs-comment">--</span><span>
</span><span id="line-182"></span><span class="hs-comment">-- It's a reasonable assumption also known as natural alignment.</span><span>
</span><span id="line-183"></span><span class="hs-comment">-- Although some architectures have different alignment rules.</span><span>
</span><span id="line-184"></span><span class="hs-comment">-- One of known exceptions is m68k (#11395, comment:16) where:</span><span>
</span><span id="line-185"></span><span class="hs-comment">--   __alignof__(StgWord) == 2, sizeof(StgWord) == 4</span><span>
</span><span id="line-186"></span><span class="hs-comment">--</span><span>
</span><span id="line-187"></span><span class="hs-comment">-- Thus we explicitly increase alignment by using</span><span>
</span><span id="line-188"></span><span class="hs-comment">--    __attribute__((aligned(4)))</span><span>
</span><span id="line-189"></span><span class="hs-comment">-- declaration.</span><span>
</span><span id="line-190"></span><span>
</span><span id="line-191"></span><span class="hs-comment">--</span><span>
</span><span id="line-192"></span><span class="hs-comment">-- has to be static, if it isn't globally visible</span><span>
</span><span id="line-193"></span><span class="hs-comment">--</span><span>
</span><span id="line-194"></span><span class="annot"><a href="GHC.CmmToC.html#pprLocalness"><span class="hs-identifier hs-type">pprLocalness</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-195"></span><span id="pprLocalness"><span class="annot"><span class="annottext">pprLocalness :: CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLocalness"><span class="hs-identifier hs-var hs-var">pprLocalness</span></a></span></span><span> </span><span id="local-6989586621681018529"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018529"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="annot"><span class="annottext">(Bool -&gt; Bool) -&gt; Bool -&gt; Bool
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#externallyVisibleCLabel"><span class="hs-identifier hs-var">externallyVisibleCLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018529"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;static &quot;</span></span><span>
</span><span id="line-196"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-197"></span><span>
</span><span id="line-198"></span><span class="annot"><a href="GHC.CmmToC.html#pprConstness"><span class="hs-identifier hs-type">pprConstness</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-199"></span><span id="pprConstness"><span class="annot"><span class="annottext">pprConstness :: Bool -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprConstness"><span class="hs-identifier hs-var hs-var">pprConstness</span></a></span></span><span> </span><span id="local-6989586621681018527"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681018527"><span class="hs-identifier hs-var">is_ro</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681018527"><span class="hs-identifier hs-var">is_ro</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;const &quot;</span></span><span>
</span><span id="line-200"></span><span>                   </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-201"></span><span>
</span><span id="line-202"></span><span class="hs-comment">-- --------------------------------------------------------------------------</span><span>
</span><span id="line-203"></span><span class="hs-comment">-- Statements.</span><span>
</span><span id="line-204"></span><span class="hs-comment">--</span><span>
</span><span id="line-205"></span><span>
</span><span id="line-206"></span><span id="local-6989586621681018960"><span id="local-6989586621681018961"><span class="annot"><a href="GHC.CmmToC.html#pprStmt"><span class="hs-identifier hs-type">pprStmt</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018961"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018960"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span></span><span>
</span><span id="line-207"></span><span>
</span><span id="line-208"></span><span id="pprStmt"><span class="annot"><span class="annottext">pprStmt :: forall (e :: Extensibility) (x :: Extensibility).
DynFlags -&gt; CmmNode e x -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprStmt"><span class="hs-identifier hs-var hs-var">pprStmt</span></a></span></span><span> </span><span id="local-6989586621681018522"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018521"><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681018521"><span class="hs-identifier hs-var">stmt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-209"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681018521"><span class="hs-identifier hs-var">stmt</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-210"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmEntry"><span class="hs-identifier hs-type">CmmEntry</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-211"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmComment"><span class="hs-identifier hs-type">CmmComment</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span> </span><span class="hs-comment">-- (hang (text &quot;/*&quot;) 3 (ftext s)) $$ ptext (sLit &quot;*/&quot;)</span><span>
</span><span id="line-212"></span><span>                          </span><span class="hs-comment">-- XXX if the string contains &quot;*/&quot;, we need to fix it</span><span>
</span><span id="line-213"></span><span>                          </span><span class="hs-comment">-- XXX we probably want to emit these comments when</span><span>
</span><span id="line-214"></span><span>                          </span><span class="hs-comment">-- some debugging option is on.  They can get quite</span><span>
</span><span id="line-215"></span><span>                          </span><span class="hs-comment">-- large.</span><span>
</span><span id="line-216"></span><span>
</span><span id="line-217"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmTick"><span class="hs-identifier hs-type">CmmTick</span></a></span><span> </span><span class="annot"><span class="annottext">CmmTickish
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-218"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmUnwind"><span class="hs-identifier hs-type">CmmUnwind</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-219"></span><span>
</span><span id="line-220"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmAssign"><span class="hs-identifier hs-type">CmmAssign</span></a></span><span> </span><span id="local-6989586621681018505"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018505"><span class="hs-identifier hs-var">dest</span></a></span></span><span> </span><span id="local-6989586621681018504"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018504"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmReg -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAssign"><span class="hs-identifier hs-var">pprAssign</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018505"><span class="hs-identifier hs-var">dest</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018504"><span class="hs-identifier hs-var">src</span></a></span><span>
</span><span id="line-221"></span><span>
</span><span id="line-222"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmStore"><span class="hs-identifier hs-type">CmmStore</span></a></span><span>  </span><span id="local-6989586621681018497"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018497"><span class="hs-identifier hs-var">dest</span></a></span></span><span> </span><span id="local-6989586621681018496"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018496"><span class="hs-identifier hs-var">src</span></a></span></span><span>
</span><span id="line-223"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018494"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018491"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">/=</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span>
</span><span id="line-224"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#isFloatType"><span class="hs-identifier hs-var">isFloatType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018494"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ASSIGN_DBL&quot;</span></span><span>
</span><span id="line-225"></span><span>                               </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ASSIGN_Word64&quot;</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span>
</span><span id="line-226"></span><span>           </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkP_"><span class="hs-identifier hs-var">mkP_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-var">pprExpr1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018497"><span class="hs-identifier hs-var">dest</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018496"><span class="hs-identifier hs-var">src</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-227"></span><span>
</span><span id="line-228"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-229"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018497"><span class="hs-identifier hs-var">dest</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018494"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018496"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-230"></span><span>        </span><span class="hs-keyword">where</span><span>
</span><span id="line-231"></span><span>          </span><span id="local-6989586621681018494"><span class="annot"><span class="annottext">rep :: CmmType
</span><a href="#local-6989586621681018494"><span class="hs-identifier hs-var hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var">cmmExprType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018491"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018496"><span class="hs-identifier hs-var">src</span></a></span><span>
</span><span id="line-232"></span><span>          </span><span id="local-6989586621681018491"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018491"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-233"></span><span>
</span><span id="line-234"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmUnsafeForeignCall"><span class="hs-identifier hs-type">CmmUnsafeForeignCall</span></a></span><span> </span><span id="local-6989586621681018472"><span class="annot"><span class="annottext">target :: ForeignTarget
</span><a href="#local-6989586621681018472"><span class="hs-identifier hs-var">target</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#ForeignTarget"><span class="hs-identifier hs-type">ForeignTarget</span></a></span><span> </span><span id="local-6989586621681018470"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018470"><span class="hs-identifier hs-var">fn</span></a></span></span><span> </span><span id="local-6989586621681018469"><span class="annot"><span class="annottext">ForeignConvention
</span><a href="#local-6989586621681018469"><span class="hs-identifier hs-var">conv</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681018468"><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681018468"><span class="hs-identifier hs-var">results</span></a></span></span><span> </span><span id="local-6989586621681018467"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018467"><span class="hs-identifier hs-var">args</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-235"></span><span>        </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018466"><span class="hs-identifier hs-var">fnCall</span></a></span><span>
</span><span id="line-236"></span><span>        </span><span class="hs-keyword">where</span><span>
</span><span id="line-237"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621681018465"><span class="annot"><span class="annottext">[ForeignHint]
</span><a href="#local-6989586621681018465"><span class="hs-identifier hs-var">res_hints</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018464"><span class="annot"><span class="annottext">[ForeignHint]
</span><a href="#local-6989586621681018464"><span class="hs-identifier hs-var">arg_hints</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignTarget -&gt; ([ForeignHint], [ForeignHint])
</span><a href="GHC.Cmm.Node.html#foreignTargetHints"><span class="hs-identifier hs-var">foreignTargetHints</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignTarget
</span><a href="#local-6989586621681018472"><span class="hs-identifier hs-var">target</span></a></span><span>
</span><span id="line-238"></span><span>        </span><span id="local-6989586621681018462"><span class="annot"><span class="annottext">hresults :: [(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018462"><span class="hs-identifier hs-var hs-var">hresults</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[LocalReg] -&gt; [ForeignHint] -&gt; [(LocalReg, ForeignHint)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681018468"><span class="hs-identifier hs-var">results</span></a></span><span> </span><span class="annot"><span class="annottext">[ForeignHint]
</span><a href="#local-6989586621681018465"><span class="hs-identifier hs-var">res_hints</span></a></span><span>
</span><span id="line-239"></span><span>        </span><span id="local-6989586621681018461"><span class="annot"><span class="annottext">hargs :: [(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018461"><span class="hs-identifier hs-var hs-var">hargs</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CmmExpr] -&gt; [ForeignHint] -&gt; [(CmmExpr, ForeignHint)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018467"><span class="hs-identifier hs-var">args</span></a></span><span> </span><span class="annot"><span class="annottext">[ForeignHint]
</span><a href="#local-6989586621681018464"><span class="hs-identifier hs-var">arg_hints</span></a></span><span>
</span><span id="line-240"></span><span>        </span><span id="local-6989586621681018460"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018460"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-241"></span><span>
</span><span id="line-242"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Node.html#ForeignConvention"><span class="hs-identifier hs-type">ForeignConvention</span></a></span><span> </span><span id="local-6989586621681018458"><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018458"><span class="hs-identifier hs-var">cconv</span></a></span></span><span> </span><span class="annot"><span class="annottext">[ForeignHint]
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">[ForeignHint]
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681018457"><span class="annot"><span class="annottext">CmmReturnInfo
</span><a href="#local-6989586621681018457"><span class="hs-identifier hs-var">ret</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignConvention
</span><a href="#local-6989586621681018469"><span class="hs-identifier hs-var">conv</span></a></span><span>
</span><span id="line-243"></span><span>
</span><span id="line-244"></span><span>        </span><span id="local-6989586621681018456"><span class="annot"><span class="annottext">cast_fn :: SDoc
</span><a href="#local-6989586621681018456"><span class="hs-identifier hs-var hs-var">cast_fn</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; SDoc -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#cCast"><span class="hs-identifier hs-var">cCast</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCFunType"><span class="hs-identifier hs-var">pprCFunType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018460"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018458"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018462"><span class="hs-identifier hs-var">hresults</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018461"><span class="hs-identifier hs-var">hargs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018470"><span class="hs-identifier hs-var">fn</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-245"></span><span>
</span><span id="line-246"></span><span>        </span><span class="hs-comment">-- See wiki:commentary/compiler/backends/ppr-c#prototypes</span><span>
</span><span id="line-247"></span><span>        </span><span id="local-6989586621681018466"><span class="annot"><span class="annottext">fnCall :: SDoc
</span><a href="#local-6989586621681018466"><span class="hs-identifier hs-var hs-var">fnCall</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-248"></span><span>            </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018470"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-249"></span><span>              </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-type">CmmLabel</span></a></span><span> </span><span id="local-6989586621681018450"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018450"><span class="hs-identifier hs-var">lbl</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-250"></span><span>                </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="GHC.Types.ForeignCall.html#StdCallConv"><span class="hs-identifier hs-var">StdCallConv</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018458"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-251"></span><span>                    </span><span class="annot"><span class="annottext">DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCall"><span class="hs-identifier hs-var">pprCall</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018450"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018458"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018462"><span class="hs-identifier hs-var">hresults</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018461"><span class="hs-identifier hs-var">hargs</span></a></span><span>
</span><span id="line-252"></span><span>                        </span><span class="hs-comment">-- stdcall functions must be declared with</span><span>
</span><span id="line-253"></span><span>                        </span><span class="hs-comment">-- a function type, otherwise the C compiler</span><span>
</span><span id="line-254"></span><span>                        </span><span class="hs-comment">-- doesn't add the @n suffix to the label.  We</span><span>
</span><span id="line-255"></span><span>                        </span><span class="hs-comment">-- can't add the @n suffix ourselves, because</span><span>
</span><span id="line-256"></span><span>                        </span><span class="hs-comment">-- it isn't valid C.</span><span>
</span><span id="line-257"></span><span>                </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmReturnInfo
</span><a href="GHC.Cmm.Node.html#CmmNeverReturns"><span class="hs-identifier hs-var">CmmNeverReturns</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CmmReturnInfo
</span><a href="#local-6989586621681018457"><span class="hs-identifier hs-var">ret</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-258"></span><span>                    </span><span class="annot"><span class="annottext">DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCall"><span class="hs-identifier hs-var">pprCall</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018456"><span class="hs-identifier hs-var">cast_fn</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018458"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018462"><span class="hs-identifier hs-var">hresults</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018461"><span class="hs-identifier hs-var">hargs</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-259"></span><span>                </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#isMathFun"><span class="hs-identifier hs-var">isMathFun</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018450"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-260"></span><span>                    </span><span class="annot"><span class="annottext">DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprForeignCall"><span class="hs-identifier hs-var">pprForeignCall</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018450"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018458"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018462"><span class="hs-identifier hs-var">hresults</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018461"><span class="hs-identifier hs-var">hargs</span></a></span><span>
</span><span id="line-261"></span><span>              </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-262"></span><span>                    </span><span class="annot"><span class="annottext">DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCall"><span class="hs-identifier hs-var">pprCall</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018456"><span class="hs-identifier hs-var">cast_fn</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018458"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018462"><span class="hs-identifier hs-var">hresults</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018461"><span class="hs-identifier hs-var">hargs</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-263"></span><span>                        </span><span class="hs-comment">-- for a dynamic call, no declaration is necessary.</span><span>
</span><span id="line-264"></span><span>
</span><span id="line-265"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmUnsafeForeignCall"><span class="hs-identifier hs-type">CmmUnsafeForeignCall</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#PrimTarget"><span class="hs-identifier hs-type">PrimTarget</span></a></span><span> </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_Touch"><span class="hs-identifier hs-var">MO_Touch</span></a></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681018440"><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681018440"><span class="hs-identifier hs-var">_results</span></a></span></span><span> </span><span id="local-6989586621681018439"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018439"><span class="hs-identifier hs-var">_args</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-266"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmUnsafeForeignCall"><span class="hs-identifier hs-type">CmmUnsafeForeignCall</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#PrimTarget"><span class="hs-identifier hs-type">PrimTarget</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Prefetch_Data"><span class="hs-identifier hs-type">MO_Prefetch_Data</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="local-6989586621681018435"><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681018435"><span class="hs-identifier hs-var">_results</span></a></span></span><span> </span><span id="local-6989586621681018434"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018434"><span class="hs-identifier hs-var">_args</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-267"></span><span>
</span><span id="line-268"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmUnsafeForeignCall"><span class="hs-identifier hs-type">CmmUnsafeForeignCall</span></a></span><span> </span><span id="local-6989586621681018431"><span class="annot"><span class="annottext">target :: ForeignTarget
</span><a href="#local-6989586621681018431"><span class="hs-identifier hs-var">target</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#PrimTarget"><span class="hs-identifier hs-type">PrimTarget</span></a></span><span> </span><span id="local-6989586621681018430"><span class="annot"><span class="annottext">CallishMachOp
</span><a href="#local-6989586621681018430"><span class="hs-identifier hs-var">op</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681018429"><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681018429"><span class="hs-identifier hs-var">results</span></a></span></span><span> </span><span id="local-6989586621681018428"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018428"><span class="hs-identifier hs-var">args</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-269"></span><span>        </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018427"><span class="hs-identifier hs-var">fn_call</span></a></span><span>
</span><span id="line-270"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-271"></span><span>        </span><span id="local-6989586621681018426"><span class="annot"><span class="annottext">cconv :: CCallConv
</span><a href="#local-6989586621681018426"><span class="hs-identifier hs-var hs-var">cconv</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="GHC.Types.ForeignCall.html#CCallConv"><span class="hs-identifier hs-var">CCallConv</span></a></span><span>
</span><span id="line-272"></span><span>        </span><span id="local-6989586621681018424"><span class="annot"><span class="annottext">fn :: SDoc
</span><a href="#local-6989586621681018424"><span class="hs-identifier hs-var hs-var">fn</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CallishMachOp -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCallishMachOp_for_C"><span class="hs-identifier hs-var">pprCallishMachOp_for_C</span></a></span><span> </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="#local-6989586621681018430"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-273"></span><span>
</span><span id="line-274"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621681018422"><span class="annot"><span class="annottext">[ForeignHint]
</span><a href="#local-6989586621681018422"><span class="hs-identifier hs-var">res_hints</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018421"><span class="annot"><span class="annottext">[ForeignHint]
</span><a href="#local-6989586621681018421"><span class="hs-identifier hs-var">arg_hints</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignTarget -&gt; ([ForeignHint], [ForeignHint])
</span><a href="GHC.Cmm.Node.html#foreignTargetHints"><span class="hs-identifier hs-var">foreignTargetHints</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignTarget
</span><a href="#local-6989586621681018431"><span class="hs-identifier hs-var">target</span></a></span><span>
</span><span id="line-275"></span><span>        </span><span id="local-6989586621681018420"><span class="annot"><span class="annottext">hresults :: [(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018420"><span class="hs-identifier hs-var hs-var">hresults</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[LocalReg] -&gt; [ForeignHint] -&gt; [(LocalReg, ForeignHint)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681018429"><span class="hs-identifier hs-var">results</span></a></span><span> </span><span class="annot"><span class="annottext">[ForeignHint]
</span><a href="#local-6989586621681018422"><span class="hs-identifier hs-var">res_hints</span></a></span><span>
</span><span id="line-276"></span><span>        </span><span id="local-6989586621681018419"><span class="annot"><span class="annottext">hargs :: [(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018419"><span class="hs-identifier hs-var hs-var">hargs</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CmmExpr] -&gt; [ForeignHint] -&gt; [(CmmExpr, ForeignHint)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018428"><span class="hs-identifier hs-var">args</span></a></span><span> </span><span class="annot"><span class="annottext">[ForeignHint]
</span><a href="#local-6989586621681018421"><span class="hs-identifier hs-var">arg_hints</span></a></span><span>
</span><span id="line-277"></span><span>
</span><span id="line-278"></span><span>        </span><span id="local-6989586621681018427"><span class="annot"><span class="annottext">fn_call :: SDoc
</span><a href="#local-6989586621681018427"><span class="hs-identifier hs-var hs-var">fn_call</span></a></span></span><span>
</span><span id="line-279"></span><span>          </span><span class="hs-comment">-- The mem primops carry an extra alignment arg.</span><span>
</span><span id="line-280"></span><span>          </span><span class="hs-comment">-- We could maybe emit an alignment directive using this info.</span><span>
</span><span id="line-281"></span><span>          </span><span class="hs-comment">-- We also need to cast mem primops to prevent conflicts with GCC</span><span>
</span><span id="line-282"></span><span>          </span><span class="hs-comment">-- builtins (see bug #5967).</span><span>
</span><span id="line-283"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681018418"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018418"><span class="hs-identifier hs-var">_align</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CallishMachOp -&gt; Maybe Int
</span><a href="GHC.Cmm.MachOp.html#machOpMemcpyishAlign"><span class="hs-identifier hs-var">machOpMemcpyishAlign</span></a></span><span> </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="#local-6989586621681018430"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-284"></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;;EFF_(&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018424"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">')'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-285"></span><span>            </span><span class="annot"><span class="annottext">DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprForeignCall"><span class="hs-identifier hs-var">pprForeignCall</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018424"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018426"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018420"><span class="hs-identifier hs-var">hresults</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018419"><span class="hs-identifier hs-var">hargs</span></a></span><span>
</span><span id="line-286"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-287"></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCall"><span class="hs-identifier hs-var">pprCall</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018424"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018426"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018420"><span class="hs-identifier hs-var">hresults</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018419"><span class="hs-identifier hs-var">hargs</span></a></span><span>
</span><span id="line-288"></span><span>
</span><span id="line-289"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmBranch"><span class="hs-identifier hs-type">CmmBranch</span></a></span><span> </span><span id="local-6989586621681018413"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018413"><span class="hs-identifier hs-var">ident</span></a></span></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBranch"><span class="hs-identifier hs-var">pprBranch</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018413"><span class="hs-identifier hs-var">ident</span></a></span><span>
</span><span id="line-290"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmCondBranch"><span class="hs-identifier hs-type">CmmCondBranch</span></a></span><span> </span><span id="local-6989586621681018408"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018408"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span id="local-6989586621681018407"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018407"><span class="hs-identifier hs-var">yes</span></a></span></span><span> </span><span id="local-6989586621681018406"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018406"><span class="hs-identifier hs-var">no</span></a></span></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; BlockId -&gt; BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCondBranch"><span class="hs-identifier hs-var">pprCondBranch</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018408"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018407"><span class="hs-identifier hs-var">yes</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018406"><span class="hs-identifier hs-var">no</span></a></span><span>
</span><span id="line-291"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmCall"><span class="hs-identifier hs-type">CmmCall</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cml_target :: CmmNode O C -&gt; CmmExpr
</span><a href="GHC.Cmm.Node.html#cml_target"><span class="hs-identifier hs-var">cml_target</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621681018400"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018400"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.CmmToC.html#mkJMP_"><span class="hs-identifier hs-var">mkJMP_</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018400"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-292"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmSwitch"><span class="hs-identifier hs-type">CmmSwitch</span></a></span><span> </span><span id="local-6989586621681018395"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018395"><span class="hs-identifier hs-var">arg</span></a></span></span><span> </span><span id="local-6989586621681018394"><span class="annot"><span class="annottext">SwitchTargets
</span><a href="#local-6989586621681018394"><span class="hs-identifier hs-var">ids</span></a></span></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SwitchTargets -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprSwitch"><span class="hs-identifier hs-var">pprSwitch</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018522"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018395"><span class="hs-identifier hs-var">arg</span></a></span><span> </span><span class="annot"><span class="annottext">SwitchTargets
</span><a href="#local-6989586621681018394"><span class="hs-identifier hs-var">ids</span></a></span><span>
</span><span id="line-293"></span><span>
</span><span id="line-294"></span><span>    </span><span id="local-6989586621681018392"><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681018392"><span class="hs-identifier hs-var">_other</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprStmt&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmNode e x -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681018521"><span class="hs-identifier hs-var">stmt</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-295"></span><span>
</span><span id="line-296"></span><span class="hs-keyword">type</span><span> </span><span id="Hinted"><span class="annot"><a href="GHC.CmmToC.html#Hinted"><span class="hs-identifier hs-var">Hinted</span></a></span></span><span> </span><span id="local-6989586621681018389"><span class="annot"><a href="#local-6989586621681018389"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621681018389"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#ForeignHint"><span class="hs-identifier hs-type">ForeignHint</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-297"></span><span>
</span><span id="line-298"></span><span class="annot"><a href="GHC.CmmToC.html#pprForeignCall"><span class="hs-identifier hs-type">pprForeignCall</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html#CCallConv"><span class="hs-identifier hs-type">CCallConv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToC.html#Hinted"><span class="hs-identifier hs-type">Hinted</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmFormal"><span class="hs-identifier hs-type">CmmFormal</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToC.html#Hinted"><span class="hs-identifier hs-type">Hinted</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmActual"><span class="hs-identifier hs-type">CmmActual</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-299"></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-300"></span><span id="pprForeignCall"><span class="annot"><span class="annottext">pprForeignCall :: DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprForeignCall"><span class="hs-identifier hs-var hs-var">pprForeignCall</span></a></span></span><span> </span><span id="local-6989586621681018386"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018386"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018385"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018385"><span class="hs-identifier hs-var">fn</span></a></span></span><span> </span><span id="local-6989586621681018384"><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018384"><span class="hs-identifier hs-var">cconv</span></a></span></span><span> </span><span id="local-6989586621681018383"><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018383"><span class="hs-identifier hs-var">results</span></a></span></span><span> </span><span id="local-6989586621681018382"><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018382"><span class="hs-identifier hs-var">args</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018381"><span class="hs-identifier hs-var">fn_call</span></a></span><span>
</span><span id="line-301"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-302"></span><span>    </span><span id="local-6989586621681018380"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018380"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018386"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-303"></span><span>    </span><span id="local-6989586621681018381"><span class="annot"><span class="annottext">fn_call :: SDoc
</span><a href="#local-6989586621681018381"><span class="hs-identifier hs-var hs-var">fn_call</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#braces"><span class="hs-identifier hs-var">braces</span></a></span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-304"></span><span>                 </span><span class="annot"><span class="annottext">Platform
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCFunType"><span class="hs-identifier hs-var">pprCFunType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018380"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ghcFunPtr&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018384"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018383"><span class="hs-identifier hs-var">results</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018382"><span class="hs-identifier hs-var">args</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-305"></span><span>              </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ghcFunPtr&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018378"><span class="hs-identifier hs-var">cast_fn</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-306"></span><span>              </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCall"><span class="hs-identifier hs-var">pprCall</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018386"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ghcFunPtr&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018384"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018383"><span class="hs-identifier hs-var">results</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018382"><span class="hs-identifier hs-var">args</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-307"></span><span>             </span><span class="hs-special">)</span><span>
</span><span id="line-308"></span><span>    </span><span id="local-6989586621681018378"><span class="annot"><span class="annottext">cast_fn :: SDoc
</span><a href="#local-6989586621681018378"><span class="hs-identifier hs-var hs-var">cast_fn</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCFunType"><span class="hs-identifier hs-var">pprCFunType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018380"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018384"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018383"><span class="hs-identifier hs-var">results</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018382"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018385"><span class="hs-identifier hs-var">fn</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-309"></span><span>
</span><span id="line-310"></span><span class="annot"><a href="GHC.CmmToC.html#pprCFunType"><span class="hs-identifier hs-type">pprCFunType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html#CCallConv"><span class="hs-identifier hs-type">CCallConv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToC.html#Hinted"><span class="hs-identifier hs-type">Hinted</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmFormal"><span class="hs-identifier hs-type">CmmFormal</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToC.html#Hinted"><span class="hs-identifier hs-type">Hinted</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmActual"><span class="hs-identifier hs-type">CmmActual</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-311"></span><span id="pprCFunType"><span class="annot"><span class="annottext">pprCFunType :: Platform
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCFunType"><span class="hs-identifier hs-var hs-var">pprCFunType</span></a></span></span><span> </span><span id="local-6989586621681018377"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018377"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681018376"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018376"><span class="hs-identifier hs-var">ppr_fn</span></a></span></span><span> </span><span id="local-6989586621681018375"><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018375"><span class="hs-identifier hs-var">cconv</span></a></span></span><span> </span><span id="local-6989586621681018374"><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018374"><span class="hs-identifier hs-var">ress</span></a></span></span><span> </span><span id="local-6989586621681018373"><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018373"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-312"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681018372"><span class="annot"><span class="annottext">res_type :: [(LocalReg, ForeignHint)] -&gt; SDoc
</span><a href="#local-6989586621681018372"><span class="hs-identifier hs-var hs-var">res_type</span></a></span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;void&quot;</span></span><span>
</span><span id="line-313"></span><span>        </span><span class="annot"><a href="#local-6989586621681018372"><span class="hs-identifier hs-var">res_type</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span id="local-6989586621681018371"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681018371"><span class="hs-identifier hs-var">one</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018370"><span class="annot"><span class="annottext">ForeignHint
</span><a href="#local-6989586621681018370"><span class="hs-identifier hs-var">hint</span></a></span></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; ForeignHint -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepHintCType"><span class="hs-identifier hs-var">machRepHintCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018377"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LocalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#localRegType"><span class="hs-identifier hs-var">localRegType</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681018371"><span class="hs-identifier hs-var">one</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="#local-6989586621681018370"><span class="hs-identifier hs-var">hint</span></a></span><span>
</span><span id="line-314"></span><span>        </span><span class="annot"><a href="#local-6989586621681018372"><span class="hs-identifier hs-var">res_type</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprCFunType: only void or 1 return value supported&quot;</span></span><span>
</span><span id="line-315"></span><span>
</span><span id="line-316"></span><span>        </span><span id="local-6989586621681018366"><span class="annot"><span class="annottext">arg_type :: (CmmExpr, ForeignHint) -&gt; SDoc
</span><a href="#local-6989586621681018366"><span class="hs-identifier hs-var hs-var">arg_type</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681018365"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018365"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018364"><span class="annot"><span class="annottext">ForeignHint
</span><a href="#local-6989586621681018364"><span class="hs-identifier hs-var">hint</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; ForeignHint -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepHintCType"><span class="hs-identifier hs-var">machRepHintCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018377"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var">cmmExprType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018377"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018365"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="#local-6989586621681018364"><span class="hs-identifier hs-var">hint</span></a></span><span>
</span><span id="line-317"></span><span>    </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)] -&gt; SDoc
</span><a href="#local-6989586621681018372"><span class="hs-identifier hs-var">res_type</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681018374"><span class="hs-identifier hs-var">ress</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span>
</span><span id="line-318"></span><span>       </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CCallConv -&gt; SDoc
</span><a href="GHC.Types.ForeignCall.html#ccallConvAttribute"><span class="hs-identifier hs-var">ccallConvAttribute</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681018375"><span class="hs-identifier hs-var">cconv</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018376"><span class="hs-identifier hs-var">ppr_fn</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span>
</span><span id="line-319"></span><span>       </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.CmmToC.html#commafy"><span class="hs-identifier hs-var">commafy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">((CmmExpr, ForeignHint) -&gt; SDoc)
-&gt; [(CmmExpr, ForeignHint)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmExpr, ForeignHint) -&gt; SDoc
</span><a href="#local-6989586621681018366"><span class="hs-identifier hs-var">arg_type</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681018373"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-320"></span><span>
</span><span id="line-321"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-322"></span><span class="hs-comment">-- unconditional branches</span><span>
</span><span id="line-323"></span><span class="annot"><a href="GHC.CmmToC.html#pprBranch"><span class="hs-identifier hs-type">pprBranch</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-324"></span><span id="pprBranch"><span class="annot"><span class="annottext">pprBranch :: BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBranch"><span class="hs-identifier hs-var hs-var">pprBranch</span></a></span></span><span> </span><span id="local-6989586621681018362"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018362"><span class="hs-identifier hs-var">ident</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;goto&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBlockId"><span class="hs-identifier hs-var">pprBlockId</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018362"><span class="hs-identifier hs-var">ident</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-325"></span><span>
</span><span id="line-326"></span><span>
</span><span id="line-327"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-328"></span><span class="hs-comment">-- conditional branches to local labels</span><span>
</span><span id="line-329"></span><span class="annot"><a href="GHC.CmmToC.html#pprCondBranch"><span class="hs-identifier hs-type">pprCondBranch</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-330"></span><span id="pprCondBranch"><span class="annot"><span class="annottext">pprCondBranch :: DynFlags -&gt; CmmExpr -&gt; BlockId -&gt; BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCondBranch"><span class="hs-identifier hs-var hs-var">pprCondBranch</span></a></span></span><span> </span><span id="local-6989586621681018361"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018361"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018360"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018360"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span id="local-6989586621681018359"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018359"><span class="hs-identifier hs-var">yes</span></a></span></span><span> </span><span id="local-6989586621681018358"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018358"><span class="hs-identifier hs-var">no</span></a></span></span><span>
</span><span id="line-331"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;if&quot;</span></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018361"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018360"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">,</span><span>
</span><span id="line-332"></span><span>                        </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;goto&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBlockId"><span class="hs-identifier hs-var">pprBlockId</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018359"><span class="hs-identifier hs-var">yes</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-333"></span><span>                        </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;else goto&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBlockId"><span class="hs-identifier hs-var">pprBlockId</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018358"><span class="hs-identifier hs-var">no</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-334"></span><span>
</span><span id="line-335"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-336"></span><span class="hs-comment">-- a local table branch</span><span>
</span><span id="line-337"></span><span class="hs-comment">--</span><span>
</span><span id="line-338"></span><span class="hs-comment">-- we find the fall-through cases</span><span>
</span><span id="line-339"></span><span class="hs-comment">--</span><span>
</span><span id="line-340"></span><span class="annot"><a href="GHC.CmmToC.html#pprSwitch"><span class="hs-identifier hs-type">pprSwitch</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Switch.html#SwitchTargets"><span class="hs-identifier hs-type">SwitchTargets</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-341"></span><span id="pprSwitch"><span class="annot"><span class="annottext">pprSwitch :: DynFlags -&gt; CmmExpr -&gt; SwitchTargets -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprSwitch"><span class="hs-identifier hs-var hs-var">pprSwitch</span></a></span></span><span> </span><span id="local-6989586621681018357"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018357"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018356"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018356"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621681018355"><span class="annot"><span class="annottext">SwitchTargets
</span><a href="#local-6989586621681018355"><span class="hs-identifier hs-var">ids</span></a></span></span><span>
</span><span id="line-342"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;switch&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018357"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018356"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#lbrace"><span class="hs-identifier hs-var">lbrace</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-343"></span><span>                </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">(([Integer], BlockId) -&gt; SDoc) -&gt; [([Integer], BlockId)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">([Integer], BlockId) -&gt; SDoc
</span><a href="#local-6989586621681018353"><span class="hs-identifier hs-var">caseify</span></a></span><span> </span><span class="annot"><span class="annottext">[([Integer], BlockId)]
</span><a href="#local-6989586621681018352"><span class="hs-identifier hs-var">pairs</span></a></span><span> </span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018351"><span class="hs-identifier hs-var">def</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#rbrace"><span class="hs-identifier hs-var">rbrace</span></a></span><span>
</span><span id="line-344"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-345"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621681018352"><span class="annot"><span class="annottext">[([Integer], BlockId)]
</span><a href="#local-6989586621681018352"><span class="hs-identifier hs-var">pairs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018350"><span class="annot"><span class="annottext">Maybe BlockId
</span><a href="#local-6989586621681018350"><span class="hs-identifier hs-var">mbdef</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SwitchTargets -&gt; ([([Integer], BlockId)], Maybe BlockId)
</span><a href="GHC.Cmm.Switch.html#switchTargetsFallThrough"><span class="hs-identifier hs-var">switchTargetsFallThrough</span></a></span><span> </span><span class="annot"><span class="annottext">SwitchTargets
</span><a href="#local-6989586621681018355"><span class="hs-identifier hs-var">ids</span></a></span><span>
</span><span id="line-346"></span><span>    </span><span id="local-6989586621681018348"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018348"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018357"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-347"></span><span>
</span><span id="line-348"></span><span>    </span><span class="hs-comment">-- fall through case</span><span>
</span><span id="line-349"></span><span>    </span><span id="local-6989586621681018353"><span class="annot"><span class="annottext">caseify :: ([Integer], BlockId) -&gt; SDoc
</span><a href="#local-6989586621681018353"><span class="hs-identifier hs-var hs-var">caseify</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681018347"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018347"><span class="hs-identifier hs-var">ix</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621681018346"><span class="annot"><span class="annottext">[Integer]
</span><a href="#local-6989586621681018346"><span class="hs-identifier hs-var">ixs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681018345"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018345"><span class="hs-identifier hs-var">ident</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Integer -&gt; SDoc) -&gt; [Integer] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; SDoc
</span><a href="#local-6989586621681018344"><span class="hs-identifier hs-var">do_fallthrough</span></a></span><span> </span><span class="annot"><span class="annottext">[Integer]
</span><a href="#local-6989586621681018346"><span class="hs-identifier hs-var">ixs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; SDoc
</span><a href="#local-6989586621681018343"><span class="hs-identifier hs-var">final_branch</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018347"><span class="hs-identifier hs-var">ix</span></a></span><span>
</span><span id="line-350"></span><span>        </span><span class="hs-keyword">where</span><span>
</span><span id="line-351"></span><span>        </span><span id="local-6989586621681018344"><span class="annot"><span class="annottext">do_fallthrough :: Integer -&gt; SDoc
</span><a href="#local-6989586621681018344"><span class="hs-identifier hs-var hs-var">do_fallthrough</span></a></span></span><span> </span><span id="local-6989586621681018342"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018342"><span class="hs-identifier hs-var">ix</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-352"></span><span>                 </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;case&quot;</span></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Integer -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprHexVal"><span class="hs-identifier hs-var">pprHexVal</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018357"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018342"><span class="hs-identifier hs-var">ix</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018348"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#colon"><span class="hs-identifier hs-var">colon</span></a></span><span> </span><span class="hs-special">,</span><span>
</span><span id="line-353"></span><span>                        </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;/* fall through */&quot;</span></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-354"></span><span>
</span><span id="line-355"></span><span>        </span><span id="local-6989586621681018343"><span class="annot"><span class="annottext">final_branch :: Integer -&gt; SDoc
</span><a href="#local-6989586621681018343"><span class="hs-identifier hs-var hs-var">final_branch</span></a></span></span><span> </span><span id="local-6989586621681018340"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018340"><span class="hs-identifier hs-var">ix</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-356"></span><span>                </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;case&quot;</span></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Integer -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprHexVal"><span class="hs-identifier hs-var">pprHexVal</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018357"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018340"><span class="hs-identifier hs-var">ix</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018348"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#colon"><span class="hs-identifier hs-var">colon</span></a></span><span> </span><span class="hs-special">,</span><span>
</span><span id="line-357"></span><span>                       </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;goto&quot;</span></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBlockId"><span class="hs-identifier hs-var">pprBlockId</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018345"><span class="hs-identifier hs-var">ident</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-358"></span><span>
</span><span id="line-359"></span><span>    </span><span class="annot"><a href="#local-6989586621681018353"><span class="hs-identifier hs-var">caseify</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Integer]
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprSwitch: switch with no cases!&quot;</span></span><span>
</span><span id="line-360"></span><span>
</span><span id="line-361"></span><span>    </span><span id="local-6989586621681018351"><span class="annot"><span class="annottext">def :: SDoc
</span><a href="#local-6989586621681018351"><span class="hs-identifier hs-var hs-var">def</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681018339"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018339"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Maybe BlockId
</span><a href="#local-6989586621681018350"><span class="hs-identifier hs-var">mbdef</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;default: goto&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBlockId"><span class="hs-identifier hs-var">pprBlockId</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018339"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-362"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-363"></span><span>
</span><span id="line-364"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-365"></span><span class="hs-comment">-- Expressions.</span><span>
</span><span id="line-366"></span><span class="hs-comment">--</span><span>
</span><span id="line-367"></span><span>
</span><span id="line-368"></span><span class="hs-comment">-- C Types: the invariant is that the C expression generated by</span><span>
</span><span id="line-369"></span><span class="hs-comment">--</span><span>
</span><span id="line-370"></span><span class="hs-comment">--      pprExpr e</span><span>
</span><span id="line-371"></span><span class="hs-comment">--</span><span>
</span><span id="line-372"></span><span class="hs-comment">-- has a type in C which is also given by</span><span>
</span><span id="line-373"></span><span class="hs-comment">--</span><span>
</span><span id="line-374"></span><span class="hs-comment">--      machRepCType (cmmExprType e)</span><span>
</span><span id="line-375"></span><span class="hs-comment">--</span><span>
</span><span id="line-376"></span><span class="hs-comment">-- (similar invariants apply to the rest of the pretty printer).</span><span>
</span><span id="line-377"></span><span>
</span><span id="line-378"></span><span class="annot"><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-type">pprExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-379"></span><span id="pprExpr"><span class="annot"><span class="annottext">pprExpr :: DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var hs-var">pprExpr</span></a></span></span><span> </span><span id="local-6989586621681018338"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018338"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018337"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018337"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018337"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-380"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span id="local-6989586621681018336"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018336"><span class="hs-identifier hs-var">lit</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit"><span class="hs-identifier hs-var">pprLit</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018338"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018336"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-381"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span id="local-6989586621681018334"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018334"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621681018333"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018333"><span class="hs-identifier hs-var">ty</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLoad"><span class="hs-identifier hs-var">pprLoad</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018338"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018334"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018333"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-382"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621681018330"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018330"><span class="hs-identifier hs-var">reg</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCastReg"><span class="hs-identifier hs-var">pprCastReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018330"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-383"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621681018327"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018327"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCastReg"><span class="hs-identifier hs-var">pprCastReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018327"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-384"></span><span>
</span><span id="line-385"></span><span>    </span><span class="hs-comment">-- CmmRegOff is an alias of MO_Add</span><span>
</span><span id="line-386"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621681018326"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018326"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span id="local-6989586621681018325"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018325"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCastReg"><span class="hs-identifier hs-var">pprCastReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018326"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'+'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span>
</span><span id="line-387"></span><span>                       </span><span class="annot"><span class="annottext">DynFlags -&gt; Integer -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprHexVal"><span class="hs-identifier hs-var">pprHexVal</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018338"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018325"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018324"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-388"></span><span>
</span><span id="line-389"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span id="local-6989586621681018322"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018322"><span class="hs-identifier hs-var">mop</span></a></span></span><span> </span><span id="local-6989586621681018321"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018321"><span class="hs-identifier hs-var">args</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; MachOp -&gt; [CmmExpr] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprMachOpApp"><span class="hs-identifier hs-var">pprMachOpApp</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018338"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018322"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018321"><span class="hs-identifier hs-var">args</span></a></span><span>
</span><span id="line-390"></span><span>
</span><span id="line-391"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span class="annot"><span class="annottext">Area
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprExpr: CmmStackSlot not supported!&quot;</span></span><span>
</span><span id="line-392"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-393"></span><span>    </span><span id="local-6989586621681018324"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018324"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018338"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-394"></span><span>
</span><span id="line-395"></span><span>
</span><span id="line-396"></span><span class="annot"><a href="GHC.CmmToC.html#pprLoad"><span class="hs-identifier hs-type">pprLoad</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-397"></span><span id="pprLoad"><span class="annot"><span class="annottext">pprLoad :: DynFlags -&gt; CmmExpr -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLoad"><span class="hs-identifier hs-var hs-var">pprLoad</span></a></span></span><span> </span><span id="local-6989586621681018318"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018318"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018317"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018317"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621681018316"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018316"><span class="hs-identifier hs-var">ty</span></a></span></span><span>
</span><span id="line-398"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018315"><span class="hs-identifier hs-var">width</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018314"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">/=</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span>
</span><span id="line-399"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#isFloatType"><span class="hs-identifier hs-var">isFloatType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018316"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PK_DBL&quot;</span></span><span>
</span><span id="line-400"></span><span>                       </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PK_Word64&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-401"></span><span>    </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkP_"><span class="hs-identifier hs-var">mkP_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-var">pprExpr1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018318"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018317"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-402"></span><span>
</span><span id="line-403"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-404"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018317"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-405"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621681018313"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018313"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018313"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018315"><span class="hs-identifier hs-var">width</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018314"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#isFloatType"><span class="hs-identifier hs-var">isFloatType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018316"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-406"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var">pprAsPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018313"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-407"></span><span>
</span><span id="line-408"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621681018310"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018310"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018310"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018315"><span class="hs-identifier hs-var">width</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018314"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#isFloatType"><span class="hs-identifier hs-var">isFloatType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018316"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-409"></span><span>                      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var">pprAsPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018310"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-410"></span><span>
</span><span id="line-411"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621681018309"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018309"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span id="local-6989586621681018308"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018308"><span class="hs-identifier hs-var">off</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018309"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018315"><span class="hs-identifier hs-var">width</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018314"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-412"></span><span>                        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018308"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#rem"><span class="hs-operator hs-var">`rem`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018314"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#isFloatType"><span class="hs-identifier hs-var">isFloatType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018316"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-413"></span><span>        </span><span class="hs-comment">-- ToDo: check that the offset is a word multiple?</span><span>
</span><span id="line-414"></span><span>        </span><span class="hs-comment">--       (For tagging to work, I had to avoid unaligned loads. --ARY)</span><span>
</span><span id="line-415"></span><span>                        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var">pprAsPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018309"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018308"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftR"><span class="hs-operator hs-var">`shiftR`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="GHC.CmmToC.html#wordShift"><span class="hs-identifier hs-var">wordShift</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018314"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-416"></span><span>
</span><span id="line-417"></span><span>        </span><span id="local-6989586621681018303"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018303"><span class="hs-identifier hs-var">_other</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#cLoad"><span class="hs-identifier hs-var">cLoad</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018318"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018317"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018316"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-418"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-419"></span><span>    </span><span id="local-6989586621681018315"><span class="annot"><span class="annottext">width :: Width
</span><a href="#local-6989586621681018315"><span class="hs-identifier hs-var hs-var">width</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681018316"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-420"></span><span>    </span><span id="local-6989586621681018314"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018314"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018318"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-421"></span><span>
</span><span id="line-422"></span><span class="annot"><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-type">pprExpr1</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-423"></span><span id="pprExpr1"><span class="annot"><span class="annottext">pprExpr1 :: DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-var hs-var">pprExpr1</span></a></span></span><span> </span><span id="local-6989586621681018301"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018301"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018300"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018300"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018300"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-424"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span id="local-6989586621681018299"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018299"><span class="hs-identifier hs-var">lit</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit1"><span class="hs-identifier hs-var">pprLit1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018301"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018299"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-425"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621681018297"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018297"><span class="hs-identifier hs-var">_reg</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018301"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018300"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-426"></span><span>   </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018301"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018300"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-427"></span><span>
</span><span id="line-428"></span><span class="hs-comment">-- --------------------------------------------------------------------------</span><span>
</span><span id="line-429"></span><span class="hs-comment">-- MachOp applications</span><span>
</span><span id="line-430"></span><span>
</span><span id="line-431"></span><span class="annot"><a href="GHC.CmmToC.html#pprMachOpApp"><span class="hs-identifier hs-type">pprMachOpApp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MachOp"><span class="hs-identifier hs-type">MachOp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-432"></span><span>
</span><span id="line-433"></span><span id="pprMachOpApp"><span class="annot"><span class="annottext">pprMachOpApp :: DynFlags -&gt; MachOp -&gt; [CmmExpr] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprMachOpApp"><span class="hs-identifier hs-var hs-var">pprMachOpApp</span></a></span></span><span> </span><span id="local-6989586621681018296"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018296"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018295"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018295"><span class="hs-identifier hs-var">op</span></a></span></span><span> </span><span id="local-6989586621681018294"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018294"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-434"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; Bool
</span><a href="#local-6989586621681018293"><span class="hs-identifier hs-var">isMulMayOfloOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018295"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-435"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;mulIntMayOflo&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.CmmToC.html#commafy"><span class="hs-identifier hs-var">commafy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmExpr -&gt; SDoc) -&gt; [CmmExpr] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018296"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018294"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-436"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681018293"><span class="annot"><span class="annottext">isMulMayOfloOp :: MachOp -&gt; Bool
</span><a href="#local-6989586621681018293"><span class="hs-identifier hs-var hs-var">isMulMayOfloOp</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_MulMayOflo"><span class="hs-identifier hs-type">MO_U_MulMayOflo</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-437"></span><span>        </span><span class="annot"><a href="#local-6989586621681018293"><span class="hs-identifier hs-var">isMulMayOfloOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_MulMayOflo"><span class="hs-identifier hs-type">MO_S_MulMayOflo</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-438"></span><span>        </span><span class="annot"><a href="#local-6989586621681018293"><span class="hs-identifier hs-var">isMulMayOfloOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-439"></span><span>
</span><span id="line-440"></span><span class="annot"><a href="GHC.CmmToC.html#pprMachOpApp"><span class="hs-identifier hs-var">pprMachOpApp</span></a></span><span> </span><span id="local-6989586621681018290"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018290"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018289"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018289"><span class="hs-identifier hs-var">mop</span></a></span></span><span> </span><span id="local-6989586621681018288"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018288"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-441"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681018287"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018287"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; Maybe SDoc
</span><a href="GHC.CmmToC.html#machOpNeedsCast"><span class="hs-identifier hs-var">machOpNeedsCast</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018289"><span class="hs-identifier hs-var">mop</span></a></span><span>
</span><span id="line-442"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018287"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; MachOp -&gt; [CmmExpr] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprMachOpApp%27"><span class="hs-identifier hs-var">pprMachOpApp'</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018290"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018289"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018288"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-443"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-444"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; MachOp -&gt; [CmmExpr] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprMachOpApp%27"><span class="hs-identifier hs-var">pprMachOpApp'</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018290"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018289"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018288"><span class="hs-identifier hs-var">args</span></a></span><span>
</span><span id="line-445"></span><span>
</span><span id="line-446"></span><span class="hs-comment">-- Comparisons in C have type 'int', but we want type W_ (this is what</span><span>
</span><span id="line-447"></span><span class="hs-comment">-- resultRepOfMachOp says).  The other C operations inherit their type</span><span>
</span><span id="line-448"></span><span class="hs-comment">-- from their operands, so no casting is required.</span><span>
</span><span id="line-449"></span><span class="annot"><a href="GHC.CmmToC.html#machOpNeedsCast"><span class="hs-identifier hs-type">machOpNeedsCast</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MachOp"><span class="hs-identifier hs-type">MachOp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-450"></span><span id="machOpNeedsCast"><span class="annot"><span class="annottext">machOpNeedsCast :: MachOp -&gt; Maybe SDoc
</span><a href="GHC.CmmToC.html#machOpNeedsCast"><span class="hs-identifier hs-var hs-var">machOpNeedsCast</span></a></span></span><span> </span><span id="local-6989586621681018284"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018284"><span class="hs-identifier hs-var">mop</span></a></span></span><span>
</span><span id="line-451"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; Bool
</span><a href="GHC.Cmm.MachOp.html#isComparisonMachOp"><span class="hs-identifier hs-var">isComparisonMachOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018284"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Maybe SDoc
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-var">mkW_</span></a></span><span>
</span><span id="line-452"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe SDoc
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-453"></span><span>
</span><span id="line-454"></span><span class="annot"><a href="GHC.CmmToC.html#pprMachOpApp%27"><span class="hs-identifier hs-type">pprMachOpApp'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MachOp"><span class="hs-identifier hs-type">MachOp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-455"></span><span id="pprMachOpApp%27"><span class="annot"><span class="annottext">pprMachOpApp' :: DynFlags -&gt; MachOp -&gt; [CmmExpr] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprMachOpApp%27"><span class="hs-identifier hs-var hs-var">pprMachOpApp'</span></a></span></span><span> </span><span id="local-6989586621681018281"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018281"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018280"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018280"><span class="hs-identifier hs-var">mop</span></a></span></span><span> </span><span id="local-6989586621681018279"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018279"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-456"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681018279"><span class="hs-identifier hs-var">args</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-457"></span><span>    </span><span class="hs-comment">-- dyadic</span><span>
</span><span id="line-458"></span><span>    </span><span class="hs-special">[</span><span id="local-6989586621681018278"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018278"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621681018277"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018277"><span class="hs-identifier hs-var">y</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; SDoc
</span><a href="#local-6989586621681018276"><span class="hs-identifier hs-var">pprArg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018278"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; MachOp -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprMachOp_for_C"><span class="hs-identifier hs-var">pprMachOp_for_C</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018274"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018280"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; SDoc
</span><a href="#local-6989586621681018276"><span class="hs-identifier hs-var">pprArg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018277"><span class="hs-identifier hs-var">y</span></a></span><span>
</span><span id="line-459"></span><span>
</span><span id="line-460"></span><span>    </span><span class="hs-comment">-- unary</span><span>
</span><span id="line-461"></span><span>    </span><span class="hs-special">[</span><span id="local-6989586621681018273"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018273"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">]</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; MachOp -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprMachOp_for_C"><span class="hs-identifier hs-var">pprMachOp_for_C</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018274"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018280"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmExpr -&gt; SDoc
</span><a href="#local-6989586621681018276"><span class="hs-identifier hs-var">pprArg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018273"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-462"></span><span>
</span><span id="line-463"></span><span>    </span><span class="annot"><span class="annottext">[CmmExpr]
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp : machop with wrong number of args&quot;</span></span><span>
</span><span id="line-464"></span><span>
</span><span id="line-465"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-466"></span><span>    </span><span id="local-6989586621681018274"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018274"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018281"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-467"></span><span>        </span><span class="hs-comment">-- Cast needed for signed integer ops</span><span>
</span><span id="line-468"></span><span>    </span><span id="local-6989586621681018276"><span class="annot"><span class="annottext">pprArg :: CmmExpr -&gt; SDoc
</span><a href="#local-6989586621681018276"><span class="hs-identifier hs-var hs-var">pprArg</span></a></span></span><span> </span><span id="local-6989586621681018272"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018272"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; Bool
</span><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span>    </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018280"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; SDoc -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#cCast"><span class="hs-identifier hs-var">cCast</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018281"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_S_CType"><span class="hs-identifier hs-var">machRep_S_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018274"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var">cmmExprType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018274"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018272"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018272"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-469"></span><span>             </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; Bool
</span><a href="#local-6989586621681018269"><span class="hs-identifier hs-var">needsFCasts</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018280"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; SDoc -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#cCast"><span class="hs-identifier hs-var">cCast</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018281"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-var">machRep_F_CType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var">cmmExprType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018274"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018272"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018272"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-470"></span><span>             </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-var">pprExpr1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018281"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681018272"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-471"></span><span>    </span><span id="local-6989586621681018269"><span class="annot"><span class="annottext">needsFCasts :: MachOp -&gt; Bool
</span><a href="#local-6989586621681018269"><span class="hs-identifier hs-var hs-var">needsFCasts</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Eq"><span class="hs-identifier hs-type">MO_F_Eq</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-472"></span><span>    </span><span class="annot"><a href="#local-6989586621681018269"><span class="hs-identifier hs-var">needsFCasts</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Ne"><span class="hs-identifier hs-type">MO_F_Ne</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-473"></span><span>    </span><span class="annot"><a href="#local-6989586621681018269"><span class="hs-identifier hs-var">needsFCasts</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Neg"><span class="hs-identifier hs-type">MO_F_Neg</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-474"></span><span>    </span><span class="annot"><a href="#local-6989586621681018269"><span class="hs-identifier hs-var">needsFCasts</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Quot"><span class="hs-identifier hs-type">MO_F_Quot</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-475"></span><span>    </span><span class="annot"><a href="#local-6989586621681018269"><span class="hs-identifier hs-var">needsFCasts</span></a></span><span> </span><span id="local-6989586621681018263"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018263"><span class="hs-identifier hs-var">mop</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; Bool
</span><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-var">floatComparison</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018263"><span class="hs-identifier hs-var">mop</span></a></span><span>
</span><span id="line-476"></span><span>
</span><span id="line-477"></span><span class="hs-comment">-- --------------------------------------------------------------------------</span><span>
</span><span id="line-478"></span><span class="hs-comment">-- Literals</span><span>
</span><span id="line-479"></span><span>
</span><span id="line-480"></span><span class="annot"><a href="GHC.CmmToC.html#pprLit"><span class="hs-identifier hs-type">pprLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-481"></span><span id="pprLit"><span class="annot"><span class="annottext">pprLit :: DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit"><span class="hs-identifier hs-var hs-var">pprLit</span></a></span></span><span> </span><span id="local-6989586621681018261"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018261"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018260"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018260"><span class="hs-identifier hs-var">lit</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018260"><span class="hs-identifier hs-var">lit</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-482"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681018258"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018258"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span id="local-6989586621681018257"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018257"><span class="hs-identifier hs-var">rep</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Integer -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprHexVal"><span class="hs-identifier hs-var">pprHexVal</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018261"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018258"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018257"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-483"></span><span>
</span><span id="line-484"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmFloat"><span class="hs-identifier hs-type">CmmFloat</span></a></span><span> </span><span id="local-6989586621681018255"><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018255"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621681018254"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018254"><span class="hs-identifier hs-var">w</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-var">machRep_F_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018254"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018253"><span class="hs-identifier hs-var">str</span></a></span><span>
</span><span id="line-485"></span><span>        </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681018252"><span class="annot"><span class="annottext">d :: Double
</span><a href="#local-6989586621681018252"><span class="hs-identifier hs-var hs-var">d</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Rational -&gt; Double
forall a. Fractional a =&gt; Rational -&gt; a
</span><a href="../../base/src/GHC.Real.html#fromRational"><span class="hs-identifier hs-var">fromRational</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018255"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Double</span></span><span>
</span><span id="line-486"></span><span>              </span><span id="local-6989586621681018253"><span class="annot"><span class="annottext">str :: SDoc
</span><a href="#local-6989586621681018253"><span class="hs-identifier hs-var hs-var">str</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Double -&gt; Bool
forall a. RealFloat a =&gt; a -&gt; Bool
</span><a href="../../base/src/GHC.Float.html#isInfinite"><span class="hs-identifier hs-var">isInfinite</span></a></span><span> </span><span class="annot"><span class="annottext">Double
</span><a href="#local-6989586621681018252"><span class="hs-identifier hs-var">d</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Double
</span><a href="#local-6989586621681018252"><span class="hs-identifier hs-var">d</span></a></span><span> </span><span class="annot"><span class="annottext">Double -&gt; Double -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&lt;</span></span><span> </span><span class="annot"><span class="annottext">Double
</span><span class="hs-number">0</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;-INFINITY&quot;</span></span><span>
</span><span id="line-487"></span><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Double -&gt; Bool
forall a. RealFloat a =&gt; a -&gt; Bool
</span><a href="../../base/src/GHC.Float.html#isInfinite"><span class="hs-identifier hs-var">isInfinite</span></a></span><span> </span><span class="annot"><span class="annottext">Double
</span><a href="#local-6989586621681018252"><span class="hs-identifier hs-var">d</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;INFINITY&quot;</span></span><span>
</span><span id="line-488"></span><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Double -&gt; Bool
forall a. RealFloat a =&gt; a -&gt; Bool
</span><a href="../../base/src/GHC.Float.html#isNaN"><span class="hs-identifier hs-var">isNaN</span></a></span><span> </span><span class="annot"><span class="annottext">Double
</span><a href="#local-6989586621681018252"><span class="hs-identifier hs-var">d</span></a></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;NAN&quot;</span></span><span>
</span><span id="line-489"></span><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Double -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Double
</span><a href="#local-6989586621681018252"><span class="hs-identifier hs-var">d</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-490"></span><span>                </span><span class="hs-comment">-- these constants come from &lt;math.h&gt;</span><span>
</span><span id="line-491"></span><span>                </span><span class="hs-comment">-- see #1861</span><span>
</span><span id="line-492"></span><span>
</span><span id="line-493"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmVec"><span class="hs-identifier hs-type">CmmVec</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC printing vector literal&quot;</span></span><span>
</span><span id="line-494"></span><span>
</span><span id="line-495"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span> </span><span id="local-6989586621681018245"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018245"><span class="hs-identifier hs-var">bid</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-var">mkW_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="#local-6989586621681018244"><span class="hs-identifier hs-var">pprCLabelAddr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; CLabel
</span><a href="GHC.Cmm.BlockId.html#infoTblLbl"><span class="hs-identifier hs-var">infoTblLbl</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018245"><span class="hs-identifier hs-var">bid</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-496"></span><span>    </span><span class="annot"><span class="annottext">CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmHighStackMark"><span class="hs-identifier hs-var">CmmHighStackMark</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC printing high stack mark&quot;</span></span><span>
</span><span id="line-497"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-type">CmmLabel</span></a></span><span> </span><span id="local-6989586621681018241"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018241"><span class="hs-identifier hs-var">clbl</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-var">mkW_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="#local-6989586621681018244"><span class="hs-identifier hs-var">pprCLabelAddr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018241"><span class="hs-identifier hs-var">clbl</span></a></span><span>
</span><span id="line-498"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-type">CmmLabelOff</span></a></span><span> </span><span id="local-6989586621681018239"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018239"><span class="hs-identifier hs-var">clbl</span></a></span></span><span> </span><span id="local-6989586621681018238"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018238"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-var">mkW_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="#local-6989586621681018244"><span class="hs-identifier hs-var">pprCLabelAddr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018239"><span class="hs-identifier hs-var">clbl</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'+'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018238"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-499"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-type">CmmLabelDiffOff</span></a></span><span> </span><span id="local-6989586621681018236"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018236"><span class="hs-identifier hs-var">clbl1</span></a></span></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681018235"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018235"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-comment">-- non-word widths not supported via C</span><span>
</span><span id="line-500"></span><span>        </span><span class="hs-comment">-- WARNING:</span><span>
</span><span id="line-501"></span><span>        </span><span class="hs-comment">--  * the lit must occur in the info table clbl2</span><span>
</span><span id="line-502"></span><span>        </span><span class="hs-comment">--  * clbl1 must be an SRT, a slow entry point or a large bitmap</span><span>
</span><span id="line-503"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-var">mkW_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="#local-6989586621681018244"><span class="hs-identifier hs-var">pprCLabelAddr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681018236"><span class="hs-identifier hs-var">clbl1</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'+'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018235"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-504"></span><span>
</span><span id="line-505"></span><span>    </span><span class="hs-keyword">where</span><span>
</span><span id="line-506"></span><span>        </span><span id="local-6989586621681018244"><span class="annot"><span class="annottext">pprCLabelAddr :: a -&gt; SDoc
</span><a href="#local-6989586621681018244"><span class="hs-identifier hs-var hs-var">pprCLabelAddr</span></a></span></span><span> </span><span id="local-6989586621681018232"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681018232"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&amp;'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681018232"><span class="hs-identifier hs-var">lbl</span></a></span><span>
</span><span id="line-507"></span><span>
</span><span id="line-508"></span><span class="annot"><a href="GHC.CmmToC.html#pprLit1"><span class="hs-identifier hs-type">pprLit1</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-509"></span><span id="pprLit1"><span class="annot"><span class="annottext">pprLit1 :: DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit1"><span class="hs-identifier hs-var hs-var">pprLit1</span></a></span></span><span> </span><span id="local-6989586621681018231"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018231"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018230"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018230"><span class="hs-identifier hs-var">lit</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018230"><span class="hs-identifier hs-var">lit</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-510"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-type">CmmLabelOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit"><span class="hs-identifier hs-var">pprLit</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018231"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018230"><span class="hs-identifier hs-var">lit</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-511"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-type">CmmLabelDiffOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit"><span class="hs-identifier hs-var">pprLit</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018231"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018230"><span class="hs-identifier hs-var">lit</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-512"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmFloat"><span class="hs-identifier hs-type">CmmFloat</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit"><span class="hs-identifier hs-var">pprLit</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018231"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018230"><span class="hs-identifier hs-var">lit</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-513"></span><span>   </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span>                         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit"><span class="hs-identifier hs-var">pprLit</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018231"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018230"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-514"></span><span>
</span><span id="line-515"></span><span class="hs-comment">-- ---------------------------------------------------------------------------</span><span>
</span><span id="line-516"></span><span class="hs-comment">-- Static data</span><span>
</span><span id="line-517"></span><span>
</span><span id="line-518"></span><span class="annot"><a href="GHC.CmmToC.html#pprStatics"><span class="hs-identifier hs-type">pprStatics</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmStatic"><span class="hs-identifier hs-type">CmmStatic</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-519"></span><span id="pprStatics"><span class="annot"><span class="annottext">pprStatics :: DynFlags -&gt; [CmmStatic] -&gt; [SDoc]
</span><a href="GHC.CmmToC.html#pprStatics"><span class="hs-identifier hs-var hs-var">pprStatics</span></a></span></span><span> </span><span id="local-6989586621681018229"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018229"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span>
</span><span id="line-520"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-521"></span><span>    </span><span id="local-6989586621681018227"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018229"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-522"></span><span>    </span><span id="local-6989586621681018228"><span class="annot"><span class="annottext">pprStatics' :: [CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var hs-var">pprStatics'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-523"></span><span>      </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-524"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmFloat"><span class="hs-identifier hs-type">CmmFloat</span></a></span><span> </span><span id="local-6989586621681018225"><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018225"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681018223"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018223"><span class="hs-identifier hs-var">rest</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-525"></span><span>        </span><span class="hs-comment">-- odd numbers of floats are padded to a word by mkVirtHeapOffsetsWithPadding</span><span>
</span><span id="line-526"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681018222"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018222"><span class="hs-identifier hs-var">rest'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018223"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-527"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit1"><span class="hs-identifier hs-var">pprLit1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018229"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Rational -&gt; CmmLit
</span><a href="GHC.CmmToC.html#floatToWord"><span class="hs-identifier hs-var">floatToWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018225"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018222"><span class="hs-identifier hs-var">rest'</span></a></span><span>
</span><span id="line-528"></span><span>        </span><span class="hs-comment">-- adjacent floats aren't padded but combined into a single word</span><span>
</span><span id="line-529"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmFloat"><span class="hs-identifier hs-type">CmmFloat</span></a></span><span> </span><span id="local-6989586621681018220"><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018220"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681018219"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018219"><span class="hs-identifier hs-var">rest'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018223"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-530"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit1"><span class="hs-identifier hs-var">pprLit1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018229"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Rational -&gt; Rational -&gt; CmmLit
</span><a href="GHC.CmmToC.html#floatPairToWord"><span class="hs-identifier hs-var">floatPairToWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018225"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018220"><span class="hs-identifier hs-var">g</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018219"><span class="hs-identifier hs-var">rest'</span></a></span><span>
</span><span id="line-531"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span>
</span><span id="line-532"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit1"><span class="hs-identifier hs-var">pprLit1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018229"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Rational -&gt; CmmLit
</span><a href="GHC.CmmToC.html#floatToWord"><span class="hs-identifier hs-var">floatToWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018225"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018223"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-533"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-534"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; [SDoc]
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprStatics: float&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmStatic -&gt; SDoc) -&gt; [CmmStatic] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; SDoc
</span><a href="#local-6989586621681018217"><span class="hs-identifier hs-var">ppr'</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018223"><span class="hs-identifier hs-var">rest</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-535"></span><span>          </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681018217"><span class="annot"><span class="annottext">ppr' :: CmmStatic -&gt; SDoc
</span><a href="#local-6989586621681018217"><span class="hs-identifier hs-var hs-var">ppr'</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span id="local-6989586621681018216"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018216"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmLit -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmLitType"><span class="hs-identifier hs-var">cmmLitType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018216"><span class="hs-identifier hs-var">l</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-536"></span><span>                </span><span class="annot"><a href="#local-6989586621681018217"><span class="hs-identifier hs-var">ppr'</span></a></span><span> </span><span id="local-6989586621681018214"><span class="annot"><span class="annottext">CmmStatic
</span><a href="#local-6989586621681018214"><span class="hs-identifier hs-var">_other</span></a></span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;bad static!&quot;</span></span><span>
</span><span id="line-537"></span><span>
</span><span id="line-538"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmFloat"><span class="hs-identifier hs-type">CmmFloat</span></a></span><span> </span><span id="local-6989586621681018213"><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018213"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681018212"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018212"><span class="hs-identifier hs-var">rest</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-539"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; SDoc) -&gt; [CmmLit] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit1"><span class="hs-identifier hs-var">pprLit1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018229"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Rational -&gt; [CmmLit]
</span><a href="GHC.CmmToC.html#doubleToWords"><span class="hs-identifier hs-var">doubleToWords</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681018213"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; [SDoc] -&gt; [SDoc]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018212"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-540"></span><span>
</span><span id="line-541"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681018210"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018210"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681018209"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018209"><span class="hs-identifier hs-var">rest</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-542"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span>
</span><span id="line-543"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ByteOrder
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformByteOrder"><span class="hs-identifier hs-var hs-var">platformByteOrder</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-544"></span><span>            </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#BigEndian"><span class="hs-identifier hs-var">BigEndian</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018206"><span class="hs-identifier hs-var">q</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; [CmmStatic] -&gt; [CmmStatic]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span>
</span><span id="line-545"></span><span>                                         </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018205"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; [CmmStatic] -&gt; [CmmStatic]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018209"><span class="hs-identifier hs-var">rest</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-546"></span><span>            </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#LittleEndian"><span class="hs-identifier hs-var">LittleEndian</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018205"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; [CmmStatic] -&gt; [CmmStatic]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span>
</span><span id="line-547"></span><span>                                         </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018206"><span class="hs-identifier hs-var">q</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; [CmmStatic] -&gt; [CmmStatic]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018209"><span class="hs-identifier hs-var">rest</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-548"></span><span>           </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681018205"><span class="annot"><span class="annottext">r :: Integer
</span><a href="#local-6989586621681018205"><span class="hs-identifier hs-var hs-var">r</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018210"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%26."><span class="hs-operator hs-var">.&amp;.</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0xffffffff</span></span><span>
</span><span id="line-549"></span><span>                 </span><span id="local-6989586621681018206"><span class="annot"><span class="annottext">q :: Integer
</span><a href="#local-6989586621681018206"><span class="hs-identifier hs-var hs-var">q</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018210"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftR"><span class="hs-operator hs-var">`shiftR`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span>
</span><span id="line-550"></span><span>
</span><span id="line-551"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681018202"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018202"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681018201"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018201"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681018200"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018200"><span class="hs-identifier hs-var">rest</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-552"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span>
</span><span id="line-553"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ByteOrder
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformByteOrder"><span class="hs-identifier hs-var hs-var">platformByteOrder</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-554"></span><span>             </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#BigEndian"><span class="hs-identifier hs-var">BigEndian</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-identifier hs-var">shiftL</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018202"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018201"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; [CmmStatic] -&gt; [CmmStatic]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018200"><span class="hs-identifier hs-var">rest</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-555"></span><span>             </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#LittleEndian"><span class="hs-identifier hs-var">LittleEndian</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-identifier hs-var">shiftL</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018201"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018202"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; [CmmStatic] -&gt; [CmmStatic]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018200"><span class="hs-identifier hs-var">rest</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-556"></span><span>
</span><span id="line-557"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681018197"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018197"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W16"><span class="hs-identifier hs-var">W16</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621681018195"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018195"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W16"><span class="hs-identifier hs-var">W16</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681018194"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018194"><span class="hs-identifier hs-var">rest</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-558"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span>
</span><span id="line-559"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ByteOrder
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformByteOrder"><span class="hs-identifier hs-var hs-var">platformByteOrder</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-560"></span><span>             </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#BigEndian"><span class="hs-identifier hs-var">BigEndian</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-identifier hs-var">shiftL</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018197"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">16</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018195"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; [CmmStatic] -&gt; [CmmStatic]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018194"><span class="hs-identifier hs-var">rest</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-561"></span><span>             </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#LittleEndian"><span class="hs-identifier hs-var">LittleEndian</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-identifier hs-var">shiftL</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018195"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">16</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681018197"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; [CmmStatic] -&gt; [CmmStatic]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018194"><span class="hs-identifier hs-var">rest</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-562"></span><span>
</span><span id="line-563"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681018193"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018193"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-564"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018193"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">/=</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018227"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-565"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; [SDoc]
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprStatics: cannot emit a non-word-sized static literal&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018193"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-566"></span><span>
</span><span id="line-567"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span id="local-6989586621681018192"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018192"><span class="hs-identifier hs-var">lit</span></a></span></span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681018191"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018191"><span class="hs-identifier hs-var">rest</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-568"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit1"><span class="hs-identifier hs-var">pprLit1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018229"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018192"><span class="hs-identifier hs-var">lit</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic] -&gt; [SDoc]
</span><a href="#local-6989586621681018228"><span class="hs-identifier hs-var">pprStatics'</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681018191"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-569"></span><span>
</span><span id="line-570"></span><span>      </span><span class="hs-special">(</span><span id="local-6989586621681018190"><span class="annot"><span class="annottext">CmmStatic
</span><a href="#local-6989586621681018190"><span class="hs-identifier hs-var">other</span></a></span></span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-571"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; [SDoc]
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprStatics: other&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmStatic -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprStatic"><span class="hs-identifier hs-var">pprStatic</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018229"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmStatic
</span><a href="#local-6989586621681018190"><span class="hs-identifier hs-var">other</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-572"></span><span>
</span><span id="line-573"></span><span class="annot"><a href="GHC.CmmToC.html#pprStatic"><span class="hs-identifier hs-type">pprStatic</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmStatic"><span class="hs-identifier hs-type">CmmStatic</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-574"></span><span id="pprStatic"><span class="annot"><span class="annottext">pprStatic :: DynFlags -&gt; CmmStatic -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprStatic"><span class="hs-identifier hs-var hs-var">pprStatic</span></a></span></span><span> </span><span id="local-6989586621681018188"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018188"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681018187"><span class="annot"><span class="annottext">CmmStatic
</span><a href="#local-6989586621681018187"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmStatic
</span><a href="#local-6989586621681018187"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-575"></span><span>
</span><span id="line-576"></span><span>    </span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span id="local-6989586621681018186"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018186"><span class="hs-identifier hs-var">lit</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmLit -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLit"><span class="hs-identifier hs-var">pprLit</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681018188"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681018186"><span class="hs-identifier hs-var">lit</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-577"></span><span>    </span><span class="annot"><a href="GHC.Cmm.html#CmmUninitialised"><span class="hs-identifier hs-type">CmmUninitialised</span></a></span><span> </span><span id="local-6989586621681018185"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018185"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkC_"><span class="hs-identifier hs-var">mkC_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681018185"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-578"></span><span>
</span><span id="line-579"></span><span>    </span><span class="hs-comment">-- these should be inlined, like the old .hc</span><span>
</span><span id="line-580"></span><span>    </span><span class="annot"><a href="GHC.Cmm.html#CmmString"><span class="hs-identifier hs-type">CmmString</span></a></span><span> </span><span id="local-6989586621681018183"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681018183"><span class="hs-identifier hs-var">s'</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-var">mkW_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprStringInCStyle"><span class="hs-identifier hs-var">pprStringInCStyle</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681018183"><span class="hs-identifier hs-var">s'</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-581"></span><span>    </span><span class="annot"><a href="GHC.Cmm.html#CmmFileEmbed"><span class="hs-identifier hs-type">CmmFileEmbed</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Unexpected CmmFileEmbed literal&quot;</span></span><span>
</span><span id="line-582"></span><span>
</span><span id="line-583"></span><span>
</span><span id="line-584"></span><span class="hs-comment">-- ---------------------------------------------------------------------------</span><span>
</span><span id="line-585"></span><span class="hs-comment">-- Block Ids</span><span>
</span><span id="line-586"></span><span>
</span><span id="line-587"></span><span class="annot"><a href="GHC.CmmToC.html#pprBlockId"><span class="hs-identifier hs-type">pprBlockId</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-588"></span><span id="pprBlockId"><span class="annot"><span class="annottext">pprBlockId :: BlockId -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprBlockId"><span class="hs-identifier hs-var hs-var">pprBlockId</span></a></span></span><span> </span><span id="local-6989586621681018181"><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018181"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'_'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Unique -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BlockId -&gt; Unique
forall a. Uniquable a =&gt; a -&gt; Unique
</span><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var">getUnique</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><a href="#local-6989586621681018181"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-589"></span><span>
</span><span id="line-590"></span><span class="hs-comment">-- --------------------------------------------------------------------------</span><span>
</span><span id="line-591"></span><span class="hs-comment">-- Print a MachOp in a way suitable for emitting via C.</span><span>
</span><span id="line-592"></span><span class="hs-comment">--</span><span>
</span><span id="line-593"></span><span>
</span><span id="line-594"></span><span class="annot"><a href="GHC.CmmToC.html#pprMachOp_for_C"><span class="hs-identifier hs-type">pprMachOp_for_C</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MachOp"><span class="hs-identifier hs-type">MachOp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-595"></span><span>
</span><span id="line-596"></span><span id="pprMachOp_for_C"><span class="annot"><span class="annottext">pprMachOp_for_C :: Platform -&gt; MachOp -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprMachOp_for_C"><span class="hs-identifier hs-var hs-var">pprMachOp_for_C</span></a></span></span><span> </span><span id="local-6989586621681018179"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018179"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681018178"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018178"><span class="hs-identifier hs-var">mop</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621681018178"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-597"></span><span>
</span><span id="line-598"></span><span>        </span><span class="hs-comment">-- Integer operations</span><span>
</span><span id="line-599"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Add"><span class="hs-identifier hs-type">MO_Add</span></a></span><span>          </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'+'</span></span><span>
</span><span id="line-600"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Sub"><span class="hs-identifier hs-type">MO_Sub</span></a></span><span>          </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'-'</span></span><span>
</span><span id="line-601"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Eq"><span class="hs-identifier hs-type">MO_Eq</span></a></span><span>           </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;==&quot;</span></span><span>
</span><span id="line-602"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Ne"><span class="hs-identifier hs-type">MO_Ne</span></a></span><span>           </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;!=&quot;</span></span><span>
</span><span id="line-603"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Mul"><span class="hs-identifier hs-type">MO_Mul</span></a></span><span>          </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span>
</span><span id="line-604"></span><span>
</span><span id="line-605"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Quot"><span class="hs-identifier hs-type">MO_S_Quot</span></a></span><span>       </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'/'</span></span><span>
</span><span id="line-606"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Rem"><span class="hs-identifier hs-type">MO_S_Rem</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'%'</span></span><span>
</span><span id="line-607"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Neg"><span class="hs-identifier hs-type">MO_S_Neg</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'-'</span></span><span>
</span><span id="line-608"></span><span>
</span><span id="line-609"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_Quot"><span class="hs-identifier hs-type">MO_U_Quot</span></a></span><span>       </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'/'</span></span><span>
</span><span id="line-610"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_Rem"><span class="hs-identifier hs-type">MO_U_Rem</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'%'</span></span><span>
</span><span id="line-611"></span><span>
</span><span id="line-612"></span><span>        </span><span class="hs-comment">-- &amp; Floating-point operations</span><span>
</span><span id="line-613"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Add"><span class="hs-identifier hs-type">MO_F_Add</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'+'</span></span><span>
</span><span id="line-614"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Sub"><span class="hs-identifier hs-type">MO_F_Sub</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'-'</span></span><span>
</span><span id="line-615"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Neg"><span class="hs-identifier hs-type">MO_F_Neg</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'-'</span></span><span>
</span><span id="line-616"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Mul"><span class="hs-identifier hs-type">MO_F_Mul</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span>
</span><span id="line-617"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Quot"><span class="hs-identifier hs-type">MO_F_Quot</span></a></span><span>       </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'/'</span></span><span>
</span><span id="line-618"></span><span>
</span><span id="line-619"></span><span>        </span><span class="hs-comment">-- Signed comparisons</span><span>
</span><span id="line-620"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Ge"><span class="hs-identifier hs-type">MO_S_Ge</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&gt;=&quot;</span></span><span>
</span><span id="line-621"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Le"><span class="hs-identifier hs-type">MO_S_Le</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;=&quot;</span></span><span>
</span><span id="line-622"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Gt"><span class="hs-identifier hs-type">MO_S_Gt</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&gt;'</span></span><span>
</span><span id="line-623"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Lt"><span class="hs-identifier hs-type">MO_S_Lt</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&lt;'</span></span><span>
</span><span id="line-624"></span><span>
</span><span id="line-625"></span><span>        </span><span class="hs-comment">-- &amp; Unsigned comparisons</span><span>
</span><span id="line-626"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_Ge"><span class="hs-identifier hs-type">MO_U_Ge</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&gt;=&quot;</span></span><span>
</span><span id="line-627"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_Le"><span class="hs-identifier hs-type">MO_U_Le</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;=&quot;</span></span><span>
</span><span id="line-628"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_Gt"><span class="hs-identifier hs-type">MO_U_Gt</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&gt;'</span></span><span>
</span><span id="line-629"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_Lt"><span class="hs-identifier hs-type">MO_U_Lt</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&lt;'</span></span><span>
</span><span id="line-630"></span><span>
</span><span id="line-631"></span><span>        </span><span class="hs-comment">-- &amp; Floating-point comparisons</span><span>
</span><span id="line-632"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Eq"><span class="hs-identifier hs-type">MO_F_Eq</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;==&quot;</span></span><span>
</span><span id="line-633"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Ne"><span class="hs-identifier hs-type">MO_F_Ne</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;!=&quot;</span></span><span>
</span><span id="line-634"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Ge"><span class="hs-identifier hs-type">MO_F_Ge</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&gt;=&quot;</span></span><span>
</span><span id="line-635"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Le"><span class="hs-identifier hs-type">MO_F_Le</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;=&quot;</span></span><span>
</span><span id="line-636"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Gt"><span class="hs-identifier hs-type">MO_F_Gt</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&gt;'</span></span><span>
</span><span id="line-637"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Lt"><span class="hs-identifier hs-type">MO_F_Lt</span></a></span><span>         </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&lt;'</span></span><span>
</span><span id="line-638"></span><span>
</span><span id="line-639"></span><span>        </span><span class="hs-comment">-- Bitwise operations.  Not all of these may be supported at all</span><span>
</span><span id="line-640"></span><span>        </span><span class="hs-comment">-- sizes, and only integral MachReps are valid.</span><span>
</span><span id="line-641"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_And"><span class="hs-identifier hs-type">MO_And</span></a></span><span>          </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&amp;'</span></span><span>
</span><span id="line-642"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Or"><span class="hs-identifier hs-type">MO_Or</span></a></span><span>           </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'|'</span></span><span>
</span><span id="line-643"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Xor"><span class="hs-identifier hs-type">MO_Xor</span></a></span><span>          </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'^'</span></span><span>
</span><span id="line-644"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Not"><span class="hs-identifier hs-type">MO_Not</span></a></span><span>          </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'~'</span></span><span>
</span><span id="line-645"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Shl"><span class="hs-identifier hs-type">MO_Shl</span></a></span><span>          </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;&lt;&quot;</span></span><span>
</span><span id="line-646"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_Shr"><span class="hs-identifier hs-type">MO_U_Shr</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&gt;&gt;&quot;</span></span><span> </span><span class="hs-comment">-- unsigned shift right</span><span>
</span><span id="line-647"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Shr"><span class="hs-identifier hs-type">MO_S_Shr</span></a></span><span>        </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&gt;&gt;&quot;</span></span><span> </span><span class="hs-comment">-- signed shift right</span><span>
</span><span id="line-648"></span><span>
</span><span id="line-649"></span><span class="hs-comment">-- Conversions.  Some of these will be NOPs, but never those that convert</span><span>
</span><span id="line-650"></span><span class="hs-comment">-- between ints and floats.</span><span>
</span><span id="line-651"></span><span class="hs-comment">-- Floating-point conversions use the signed variant.</span><span>
</span><span id="line-652"></span><span class="hs-comment">-- We won't know to generate (void*) casts here, but maybe from</span><span>
</span><span id="line-653"></span><span class="hs-comment">-- context elsewhere</span><span>
</span><span id="line-654"></span><span>
</span><span id="line-655"></span><span class="hs-comment">-- noop casts</span><span>
</span><span id="line-656"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_UU_Conv"><span class="hs-identifier hs-type">MO_UU_Conv</span></a></span><span> </span><span id="local-6989586621681018144"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018144"><span class="hs-identifier hs-var">from</span></a></span></span><span> </span><span id="local-6989586621681018143"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018143"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018144"><span class="hs-identifier hs-var">from</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018143"><span class="hs-identifier hs-var">to</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-657"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_UU_Conv"><span class="hs-identifier hs-type">MO_UU_Conv</span></a></span><span> </span><span id="local-6989586621681018142"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018142"><span class="hs-identifier hs-var">_from</span></a></span></span><span> </span><span id="local-6989586621681018141"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018141"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_U_CType"><span class="hs-identifier hs-var">machRep_U_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018179"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018141"><span class="hs-identifier hs-var">to</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-658"></span><span>
</span><span id="line-659"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_SS_Conv"><span class="hs-identifier hs-type">MO_SS_Conv</span></a></span><span> </span><span id="local-6989586621681018138"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018138"><span class="hs-identifier hs-var">from</span></a></span></span><span> </span><span id="local-6989586621681018137"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018137"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018138"><span class="hs-identifier hs-var">from</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018137"><span class="hs-identifier hs-var">to</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-660"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_SS_Conv"><span class="hs-identifier hs-type">MO_SS_Conv</span></a></span><span> </span><span id="local-6989586621681018136"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018136"><span class="hs-identifier hs-var">_from</span></a></span></span><span> </span><span id="local-6989586621681018135"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018135"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_S_CType"><span class="hs-identifier hs-var">machRep_S_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018179"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018135"><span class="hs-identifier hs-var">to</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-661"></span><span>
</span><span id="line-662"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_XX_Conv"><span class="hs-identifier hs-type">MO_XX_Conv</span></a></span><span> </span><span id="local-6989586621681018133"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018133"><span class="hs-identifier hs-var">from</span></a></span></span><span> </span><span id="local-6989586621681018132"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018132"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018133"><span class="hs-identifier hs-var">from</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018132"><span class="hs-identifier hs-var">to</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-663"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_XX_Conv"><span class="hs-identifier hs-type">MO_XX_Conv</span></a></span><span> </span><span id="local-6989586621681018131"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018131"><span class="hs-identifier hs-var">_from</span></a></span></span><span> </span><span id="local-6989586621681018130"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018130"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_U_CType"><span class="hs-identifier hs-var">machRep_U_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018179"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018130"><span class="hs-identifier hs-var">to</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-664"></span><span>
</span><span id="line-665"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_FF_Conv"><span class="hs-identifier hs-type">MO_FF_Conv</span></a></span><span> </span><span id="local-6989586621681018128"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018128"><span class="hs-identifier hs-var">from</span></a></span></span><span> </span><span id="local-6989586621681018127"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018127"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018128"><span class="hs-identifier hs-var">from</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018127"><span class="hs-identifier hs-var">to</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-666"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_FF_Conv"><span class="hs-identifier hs-type">MO_FF_Conv</span></a></span><span> </span><span id="local-6989586621681018126"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018126"><span class="hs-identifier hs-var">_from</span></a></span></span><span> </span><span id="local-6989586621681018125"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018125"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-var">machRep_F_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018125"><span class="hs-identifier hs-var">to</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-667"></span><span>
</span><span id="line-668"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_SF_Conv"><span class="hs-identifier hs-type">MO_SF_Conv</span></a></span><span> </span><span id="local-6989586621681018123"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018123"><span class="hs-identifier hs-var">_from</span></a></span></span><span> </span><span id="local-6989586621681018122"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018122"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-var">machRep_F_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018122"><span class="hs-identifier hs-var">to</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-669"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_FS_Conv"><span class="hs-identifier hs-type">MO_FS_Conv</span></a></span><span> </span><span id="local-6989586621681018120"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018120"><span class="hs-identifier hs-var">_from</span></a></span></span><span> </span><span id="local-6989586621681018119"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018119"><span class="hs-identifier hs-var">to</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_S_CType"><span class="hs-identifier hs-var">machRep_S_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681018179"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018119"><span class="hs-identifier hs-var">to</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-670"></span><span>
</span><span id="line-671"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_MulMayOflo"><span class="hs-identifier hs-type">MO_S_MulMayOflo</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-672"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_S_MulMayOflo&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-673"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_S_MulMayOflo&quot;</span></span><span>
</span><span id="line-674"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-675"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_MulMayOflo"><span class="hs-identifier hs-type">MO_U_MulMayOflo</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-676"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_U_MulMayOflo&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-677"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_U_MulMayOflo&quot;</span></span><span>
</span><span id="line-678"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-679"></span><span>
</span><span id="line-680"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_V_Insert"><span class="hs-identifier hs-type">MO_V_Insert</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-681"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_V_Insert&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-682"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_V_Insert&quot;</span></span><span>
</span><span id="line-683"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-684"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_V_Extract"><span class="hs-identifier hs-type">MO_V_Extract</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-685"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_V_Extract&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-686"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_V_Extract&quot;</span></span><span>
</span><span id="line-687"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-688"></span><span>
</span><span id="line-689"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_V_Add"><span class="hs-identifier hs-type">MO_V_Add</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-690"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_V_Add&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-691"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_V_Add&quot;</span></span><span>
</span><span id="line-692"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-693"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_V_Sub"><span class="hs-identifier hs-type">MO_V_Sub</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-694"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_V_Sub&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-695"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_V_Sub&quot;</span></span><span>
</span><span id="line-696"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-697"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_V_Mul"><span class="hs-identifier hs-type">MO_V_Mul</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-698"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_V_Mul&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-699"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_V_Mul&quot;</span></span><span>
</span><span id="line-700"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-701"></span><span>
</span><span id="line-702"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VS_Quot"><span class="hs-identifier hs-type">MO_VS_Quot</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-703"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VS_Quot&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-704"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VS_Quot&quot;</span></span><span>
</span><span id="line-705"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-706"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VS_Rem"><span class="hs-identifier hs-type">MO_VS_Rem</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-707"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VS_Rem&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-708"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VS_Rem&quot;</span></span><span>
</span><span id="line-709"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-710"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VS_Neg"><span class="hs-identifier hs-type">MO_VS_Neg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-711"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VS_Neg&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-712"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VS_Neg&quot;</span></span><span>
</span><span id="line-713"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-714"></span><span>
</span><span id="line-715"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VU_Quot"><span class="hs-identifier hs-type">MO_VU_Quot</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-716"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VU_Quot&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-717"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VU_Quot&quot;</span></span><span>
</span><span id="line-718"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-719"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VU_Rem"><span class="hs-identifier hs-type">MO_VU_Rem</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-720"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VU_Rem&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-721"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VU_Rem&quot;</span></span><span>
</span><span id="line-722"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-723"></span><span>
</span><span id="line-724"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VF_Insert"><span class="hs-identifier hs-type">MO_VF_Insert</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-725"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VF_Insert&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-726"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VF_Insert&quot;</span></span><span>
</span><span id="line-727"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-728"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VF_Extract"><span class="hs-identifier hs-type">MO_VF_Extract</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-729"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VF_Extract&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-730"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VF_Extract&quot;</span></span><span>
</span><span id="line-731"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-732"></span><span>
</span><span id="line-733"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VF_Add"><span class="hs-identifier hs-type">MO_VF_Add</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-734"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VF_Add&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-735"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VF_Add&quot;</span></span><span>
</span><span id="line-736"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-737"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VF_Sub"><span class="hs-identifier hs-type">MO_VF_Sub</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-738"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VF_Sub&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-739"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VF_Sub&quot;</span></span><span>
</span><span id="line-740"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-741"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VF_Neg"><span class="hs-identifier hs-type">MO_VF_Neg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-742"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VF_Neg&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-743"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VF_Neg&quot;</span></span><span>
</span><span id="line-744"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-745"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VF_Mul"><span class="hs-identifier hs-type">MO_VF_Mul</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-746"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VF_Mul&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-747"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VF_Mul&quot;</span></span><span>
</span><span id="line-748"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-749"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_VF_Quot"><span class="hs-identifier hs-type">MO_VF_Quot</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; SDoc -&gt; SDoc
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;offending mop:&quot;</span></span><span>
</span><span id="line-750"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MO_VF_Quot&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-751"></span><span>                                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;PprC.pprMachOp_for_C: MO_VF_Quot&quot;</span></span><span>
</span><span id="line-752"></span><span>                                      </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; should have been handled earlier!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-753"></span><span>
</span><span id="line-754"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_AlignmentCheck"><span class="hs-identifier hs-type">MO_AlignmentCheck</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;-falignment-santisation not supported by unregisterised backend&quot;</span></span><span>
</span><span id="line-755"></span><span>
</span><span id="line-756"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-type">signedOp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MachOp"><span class="hs-identifier hs-type">MachOp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>      </span><span class="hs-comment">-- Argument type(s) are signed ints</span><span>
</span><span id="line-757"></span><span id="signedOp"><span class="annot"><span class="annottext">signedOp :: MachOp -&gt; Bool
</span><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var hs-var">signedOp</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Quot"><span class="hs-identifier hs-type">MO_S_Quot</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-758"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Rem"><span class="hs-identifier hs-type">MO_S_Rem</span></a></span><span>  </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-759"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Neg"><span class="hs-identifier hs-type">MO_S_Neg</span></a></span><span>  </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-760"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Ge"><span class="hs-identifier hs-type">MO_S_Ge</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-761"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Le"><span class="hs-identifier hs-type">MO_S_Le</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-762"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Gt"><span class="hs-identifier hs-type">MO_S_Gt</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-763"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Lt"><span class="hs-identifier hs-type">MO_S_Lt</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-764"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Shr"><span class="hs-identifier hs-type">MO_S_Shr</span></a></span><span>  </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-765"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_SS_Conv"><span class="hs-identifier hs-type">MO_SS_Conv</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-766"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_SF_Conv"><span class="hs-identifier hs-type">MO_SF_Conv</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-767"></span><span class="annot"><a href="GHC.CmmToC.html#signedOp"><span class="hs-identifier hs-var">signedOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><span class="hs-identifier">_</span></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-768"></span><span>
</span><span id="line-769"></span><span class="annot"><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-type">floatComparison</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MachOp"><span class="hs-identifier hs-type">MachOp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>  </span><span class="hs-comment">-- comparison between float args</span><span>
</span><span id="line-770"></span><span id="floatComparison"><span class="annot"><span class="annottext">floatComparison :: MachOp -&gt; Bool
</span><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-var hs-var">floatComparison</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Eq"><span class="hs-identifier hs-type">MO_F_Eq</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-771"></span><span class="annot"><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-var">floatComparison</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Ne"><span class="hs-identifier hs-type">MO_F_Ne</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-772"></span><span class="annot"><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-var">floatComparison</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Ge"><span class="hs-identifier hs-type">MO_F_Ge</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-773"></span><span class="annot"><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-var">floatComparison</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Le"><span class="hs-identifier hs-type">MO_F_Le</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-774"></span><span class="annot"><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-var">floatComparison</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Gt"><span class="hs-identifier hs-type">MO_F_Gt</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-775"></span><span class="annot"><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-var">floatComparison</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_F_Lt"><span class="hs-identifier hs-type">MO_F_Lt</span></a></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-776"></span><span class="annot"><a href="GHC.CmmToC.html#floatComparison"><span class="hs-identifier hs-var">floatComparison</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><span class="hs-identifier">_</span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-777"></span><span>
</span><span id="line-778"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-779"></span><span class="hs-comment">-- tend to be implemented by foreign calls</span><span>
</span><span id="line-780"></span><span>
</span><span id="line-781"></span><span class="annot"><a href="GHC.CmmToC.html#pprCallishMachOp_for_C"><span class="hs-identifier hs-type">pprCallishMachOp_for_C</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html#CallishMachOp"><span class="hs-identifier hs-type">CallishMachOp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-782"></span><span>
</span><span id="line-783"></span><span id="pprCallishMachOp_for_C"><span class="annot"><span class="annottext">pprCallishMachOp_for_C :: CallishMachOp -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCallishMachOp_for_C"><span class="hs-identifier hs-var hs-var">pprCallishMachOp_for_C</span></a></span></span><span> </span><span id="local-6989586621681018099"><span class="annot"><span class="annottext">CallishMachOp
</span><a href="#local-6989586621681018099"><span class="hs-identifier hs-var">mop</span></a></span></span><span>
</span><span id="line-784"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="#local-6989586621681018099"><span class="hs-identifier hs-var">mop</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-785"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Pwr"><span class="hs-identifier hs-var">MO_F64_Pwr</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pow&quot;</span></span><span>
</span><span id="line-786"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Sin"><span class="hs-identifier hs-var">MO_F64_Sin</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;sin&quot;</span></span><span>
</span><span id="line-787"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Cos"><span class="hs-identifier hs-var">MO_F64_Cos</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;cos&quot;</span></span><span>
</span><span id="line-788"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Tan"><span class="hs-identifier hs-var">MO_F64_Tan</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;tan&quot;</span></span><span>
</span><span id="line-789"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Sinh"><span class="hs-identifier hs-var">MO_F64_Sinh</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;sinh&quot;</span></span><span>
</span><span id="line-790"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Cosh"><span class="hs-identifier hs-var">MO_F64_Cosh</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;cosh&quot;</span></span><span>
</span><span id="line-791"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Tanh"><span class="hs-identifier hs-var">MO_F64_Tanh</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;tanh&quot;</span></span><span>
</span><span id="line-792"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Asin"><span class="hs-identifier hs-var">MO_F64_Asin</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;asin&quot;</span></span><span>
</span><span id="line-793"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Acos"><span class="hs-identifier hs-var">MO_F64_Acos</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;acos&quot;</span></span><span>
</span><span id="line-794"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Atanh"><span class="hs-identifier hs-var">MO_F64_Atanh</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;atanh&quot;</span></span><span>
</span><span id="line-795"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Asinh"><span class="hs-identifier hs-var">MO_F64_Asinh</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;asinh&quot;</span></span><span>
</span><span id="line-796"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Acosh"><span class="hs-identifier hs-var">MO_F64_Acosh</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;acosh&quot;</span></span><span>
</span><span id="line-797"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Atan"><span class="hs-identifier hs-var">MO_F64_Atan</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;atan&quot;</span></span><span>
</span><span id="line-798"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Log"><span class="hs-identifier hs-var">MO_F64_Log</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;log&quot;</span></span><span>
</span><span id="line-799"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Log1P"><span class="hs-identifier hs-var">MO_F64_Log1P</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;log1p&quot;</span></span><span>
</span><span id="line-800"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Exp"><span class="hs-identifier hs-var">MO_F64_Exp</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;exp&quot;</span></span><span>
</span><span id="line-801"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_ExpM1"><span class="hs-identifier hs-var">MO_F64_ExpM1</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;expm1&quot;</span></span><span>
</span><span id="line-802"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Sqrt"><span class="hs-identifier hs-var">MO_F64_Sqrt</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;sqrt&quot;</span></span><span>
</span><span id="line-803"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F64_Fabs"><span class="hs-identifier hs-var">MO_F64_Fabs</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;fabs&quot;</span></span><span>
</span><span id="line-804"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Pwr"><span class="hs-identifier hs-var">MO_F32_Pwr</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;powf&quot;</span></span><span>
</span><span id="line-805"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Sin"><span class="hs-identifier hs-var">MO_F32_Sin</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;sinf&quot;</span></span><span>
</span><span id="line-806"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Cos"><span class="hs-identifier hs-var">MO_F32_Cos</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;cosf&quot;</span></span><span>
</span><span id="line-807"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Tan"><span class="hs-identifier hs-var">MO_F32_Tan</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;tanf&quot;</span></span><span>
</span><span id="line-808"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Sinh"><span class="hs-identifier hs-var">MO_F32_Sinh</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;sinhf&quot;</span></span><span>
</span><span id="line-809"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Cosh"><span class="hs-identifier hs-var">MO_F32_Cosh</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;coshf&quot;</span></span><span>
</span><span id="line-810"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Tanh"><span class="hs-identifier hs-var">MO_F32_Tanh</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;tanhf&quot;</span></span><span>
</span><span id="line-811"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Asin"><span class="hs-identifier hs-var">MO_F32_Asin</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;asinf&quot;</span></span><span>
</span><span id="line-812"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Acos"><span class="hs-identifier hs-var">MO_F32_Acos</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;acosf&quot;</span></span><span>
</span><span id="line-813"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Atan"><span class="hs-identifier hs-var">MO_F32_Atan</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;atanf&quot;</span></span><span>
</span><span id="line-814"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Asinh"><span class="hs-identifier hs-var">MO_F32_Asinh</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;asinhf&quot;</span></span><span>
</span><span id="line-815"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Acosh"><span class="hs-identifier hs-var">MO_F32_Acosh</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;acoshf&quot;</span></span><span>
</span><span id="line-816"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Atanh"><span class="hs-identifier hs-var">MO_F32_Atanh</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;atanhf&quot;</span></span><span>
</span><span id="line-817"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Log"><span class="hs-identifier hs-var">MO_F32_Log</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;logf&quot;</span></span><span>
</span><span id="line-818"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Log1P"><span class="hs-identifier hs-var">MO_F32_Log1P</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;log1pf&quot;</span></span><span>
</span><span id="line-819"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Exp"><span class="hs-identifier hs-var">MO_F32_Exp</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;expf&quot;</span></span><span>
</span><span id="line-820"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_ExpM1"><span class="hs-identifier hs-var">MO_F32_ExpM1</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;expm1f&quot;</span></span><span>
</span><span id="line-821"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Sqrt"><span class="hs-identifier hs-var">MO_F32_Sqrt</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;sqrtf&quot;</span></span><span>
</span><span id="line-822"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_F32_Fabs"><span class="hs-identifier hs-var">MO_F32_Fabs</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;fabsf&quot;</span></span><span>
</span><span id="line-823"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_ReadBarrier"><span class="hs-identifier hs-var">MO_ReadBarrier</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;load_load_barrier&quot;</span></span><span>
</span><span id="line-824"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_WriteBarrier"><span class="hs-identifier hs-var">MO_WriteBarrier</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;write_barrier&quot;</span></span><span>
</span><span id="line-825"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Memcpy"><span class="hs-identifier hs-type">MO_Memcpy</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;memcpy&quot;</span></span><span>
</span><span id="line-826"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Memset"><span class="hs-identifier hs-type">MO_Memset</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;memset&quot;</span></span><span>
</span><span id="line-827"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Memmove"><span class="hs-identifier hs-type">MO_Memmove</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;memmove&quot;</span></span><span>
</span><span id="line-828"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Memcmp"><span class="hs-identifier hs-type">MO_Memcmp</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;memcmp&quot;</span></span><span>
</span><span id="line-829"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_BSwap"><span class="hs-identifier hs-type">MO_BSwap</span></a></span><span> </span><span id="local-6989586621681018053"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018053"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#bSwapLabel"><span class="hs-identifier hs-var">bSwapLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018053"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-830"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_BRev"><span class="hs-identifier hs-type">MO_BRev</span></a></span><span> </span><span id="local-6989586621681018050"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018050"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#bRevLabel"><span class="hs-identifier hs-var">bRevLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018050"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-831"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_PopCnt"><span class="hs-identifier hs-type">MO_PopCnt</span></a></span><span> </span><span id="local-6989586621681018047"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018047"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#popCntLabel"><span class="hs-identifier hs-var">popCntLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018047"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-832"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Pext"><span class="hs-identifier hs-type">MO_Pext</span></a></span><span> </span><span id="local-6989586621681018044"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018044"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#pextLabel"><span class="hs-identifier hs-var">pextLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018044"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-833"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Pdep"><span class="hs-identifier hs-type">MO_Pdep</span></a></span><span> </span><span id="local-6989586621681018041"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018041"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#pdepLabel"><span class="hs-identifier hs-var">pdepLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018041"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-834"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Clz"><span class="hs-identifier hs-type">MO_Clz</span></a></span><span> </span><span id="local-6989586621681018038"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018038"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#clzLabel"><span class="hs-identifier hs-var">clzLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018038"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-835"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Ctz"><span class="hs-identifier hs-type">MO_Ctz</span></a></span><span> </span><span id="local-6989586621681018035"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018035"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#ctzLabel"><span class="hs-identifier hs-var">ctzLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018035"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-836"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_AtomicRMW"><span class="hs-identifier hs-type">MO_AtomicRMW</span></a></span><span> </span><span id="local-6989586621681018032"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018032"><span class="hs-identifier hs-var">w</span></a></span></span><span> </span><span id="local-6989586621681018031"><span class="annot"><span class="annottext">AtomicMachOp
</span><a href="#local-6989586621681018031"><span class="hs-identifier hs-var">amop</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; AtomicMachOp -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#atomicRMWLabel"><span class="hs-identifier hs-var">atomicRMWLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018032"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="annot"><span class="annottext">AtomicMachOp
</span><a href="#local-6989586621681018031"><span class="hs-identifier hs-var">amop</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-837"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Cmpxchg"><span class="hs-identifier hs-type">MO_Cmpxchg</span></a></span><span> </span><span id="local-6989586621681018028"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018028"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#cmpxchgLabel"><span class="hs-identifier hs-var">cmpxchgLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018028"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-838"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Xchg"><span class="hs-identifier hs-type">MO_Xchg</span></a></span><span> </span><span id="local-6989586621681018025"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018025"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#xchgLabel"><span class="hs-identifier hs-var">xchgLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018025"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-839"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_AtomicRead"><span class="hs-identifier hs-type">MO_AtomicRead</span></a></span><span> </span><span id="local-6989586621681018022"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018022"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#atomicReadLabel"><span class="hs-identifier hs-var">atomicReadLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018022"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-840"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_AtomicWrite"><span class="hs-identifier hs-type">MO_AtomicWrite</span></a></span><span> </span><span id="local-6989586621681018019"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018019"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#atomicWriteLabel"><span class="hs-identifier hs-var">atomicWriteLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018019"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-841"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_UF_Conv"><span class="hs-identifier hs-type">MO_UF_Conv</span></a></span><span> </span><span id="local-6989586621681018016"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018016"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; PtrString) -&gt; String -&gt; PtrString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
</span><a href="GHC.CmmToAsm.CPrim.html#word2FloatLabel"><span class="hs-identifier hs-var">word2FloatLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681018016"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-842"></span><span>
</span><span id="line-843"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_Mul2"><span class="hs-identifier hs-type">MO_S_Mul2</span></a></span><span>     </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-844"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_S_QuotRem"><span class="hs-identifier hs-type">MO_S_QuotRem</span></a></span><span>  </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-845"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_QuotRem"><span class="hs-identifier hs-type">MO_U_QuotRem</span></a></span><span>  </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-846"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_QuotRem2"><span class="hs-identifier hs-type">MO_U_QuotRem2</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-847"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Add2"><span class="hs-identifier hs-type">MO_Add2</span></a></span><span>       </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-848"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_AddWordC"><span class="hs-identifier hs-type">MO_AddWordC</span></a></span><span>   </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-849"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_SubWordC"><span class="hs-identifier hs-type">MO_SubWordC</span></a></span><span>   </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-850"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_AddIntC"><span class="hs-identifier hs-type">MO_AddIntC</span></a></span><span>    </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-851"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_SubIntC"><span class="hs-identifier hs-type">MO_SubIntC</span></a></span><span>    </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-852"></span><span>        </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_U_Mul2"><span class="hs-identifier hs-type">MO_U_Mul2</span></a></span><span>     </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-853"></span><span>        </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="GHC.Cmm.MachOp.html#MO_Touch"><span class="hs-identifier hs-var">MO_Touch</span></a></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-854"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.MachOp.html#MO_Prefetch_Data"><span class="hs-identifier hs-type">MO_Prefetch_Data</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var">unsupported</span></a></span><span>
</span><span id="line-855"></span><span>        </span><span class="hs-comment">--- we could support prefetch via &quot;__builtin_prefetch&quot;</span><span>
</span><span id="line-856"></span><span>        </span><span class="hs-comment">--- Not adding it for now</span><span>
</span><span id="line-857"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681018013"><span class="annot"><span class="annottext">unsupported :: SDoc
</span><a href="#local-6989586621681018013"><span class="hs-identifier hs-var hs-var">unsupported</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprCallishMachOp_for_C: &quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">CallishMachOp -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">CallishMachOp
</span><a href="#local-6989586621681018099"><span class="hs-identifier hs-var">mop</span></a></span><span>
</span><span id="line-858"></span><span>                            </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; not supported!&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-859"></span><span>
</span><span id="line-860"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-861"></span><span class="hs-comment">-- Useful #defines</span><span>
</span><span id="line-862"></span><span class="hs-comment">--</span><span>
</span><span id="line-863"></span><span>
</span><span id="line-864"></span><span class="annot"><a href="GHC.CmmToC.html#mkJMP_"><span class="hs-identifier hs-type">mkJMP_</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#mkFN_"><span class="hs-identifier hs-type">mkFN_</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#mkIF_"><span class="hs-identifier hs-type">mkIF_</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-865"></span><span>
</span><span id="line-866"></span><span id="mkJMP_"><span class="annot"><span class="annottext">mkJMP_ :: SDoc -&gt; SDoc
</span><a href="GHC.CmmToC.html#mkJMP_"><span class="hs-identifier hs-var hs-var">mkJMP_</span></a></span></span><span> </span><span id="local-6989586621681018003"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018003"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;JMP_&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018003"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-867"></span><span id="mkFN_"><span class="annot"><span class="annottext">mkFN_ :: SDoc -&gt; SDoc
</span><a href="GHC.CmmToC.html#mkFN_"><span class="hs-identifier hs-var hs-var">mkFN_</span></a></span></span><span>  </span><span id="local-6989586621681018002"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018002"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;FN_&quot;</span></span><span>  </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018002"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="hs-comment">-- externally visible function</span><span>
</span><span id="line-868"></span><span id="mkIF_"><span class="annot"><span class="annottext">mkIF_ :: SDoc -&gt; SDoc
</span><a href="GHC.CmmToC.html#mkIF_"><span class="hs-identifier hs-var hs-var">mkIF_</span></a></span></span><span>  </span><span id="local-6989586621681018001"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018001"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;IF_&quot;</span></span><span>  </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681018001"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="hs-comment">-- locally visible</span><span>
</span><span id="line-869"></span><span>
</span><span id="line-870"></span><span class="hs-comment">-- from includes/Stg.h</span><span>
</span><span id="line-871"></span><span class="hs-comment">--</span><span>
</span><span id="line-872"></span><span class="annot"><a href="GHC.CmmToC.html#mkC_"><span class="hs-identifier hs-type">mkC_</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-type">mkW_</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.CmmToC.html#mkP_"><span class="hs-identifier hs-type">mkP_</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-873"></span><span>
</span><span id="line-874"></span><span id="mkC_"><span class="annot"><span class="annottext">mkC_ :: SDoc
</span><a href="GHC.CmmToC.html#mkC_"><span class="hs-identifier hs-var hs-var">mkC_</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(C_)&quot;</span></span><span>        </span><span class="hs-comment">-- StgChar</span><span>
</span><span id="line-875"></span><span id="mkW_"><span class="annot"><span class="annottext">mkW_ :: SDoc
</span><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-var hs-var">mkW_</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(W_)&quot;</span></span><span>        </span><span class="hs-comment">-- StgWord</span><span>
</span><span id="line-876"></span><span id="mkP_"><span class="annot"><span class="annottext">mkP_ :: SDoc
</span><a href="GHC.CmmToC.html#mkP_"><span class="hs-identifier hs-var hs-var">mkP_</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(P_)&quot;</span></span><span>        </span><span class="hs-comment">-- StgWord*</span><span>
</span><span id="line-877"></span><span>
</span><span id="line-878"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-879"></span><span class="hs-comment">--</span><span>
</span><span id="line-880"></span><span class="hs-comment">-- Assignments</span><span>
</span><span id="line-881"></span><span class="hs-comment">--</span><span>
</span><span id="line-882"></span><span class="hs-comment">-- Generating assignments is what we're all about, here</span><span>
</span><span id="line-883"></span><span class="hs-comment">--</span><span>
</span><span id="line-884"></span><span class="annot"><a href="GHC.CmmToC.html#pprAssign"><span class="hs-identifier hs-type">pprAssign</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-885"></span><span>
</span><span id="line-886"></span><span class="hs-comment">-- dest is a reg, rhs is a reg</span><span>
</span><span id="line-887"></span><span id="pprAssign"><span class="annot"><span class="annottext">pprAssign :: DynFlags -&gt; CmmReg -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAssign"><span class="hs-identifier hs-var hs-var">pprAssign</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681018000"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018000"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621681017999"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017999"><span class="hs-identifier hs-var">r2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-888"></span><span>   </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018000"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017999"><span class="hs-identifier hs-var">r2</span></a></span><span>
</span><span id="line-889"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var">pprAsPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681018000"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var">pprAsPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017999"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-890"></span><span>
</span><span id="line-891"></span><span class="hs-comment">-- dest is a reg, rhs is a CmmRegOff</span><span>
</span><span id="line-892"></span><span class="annot"><a href="GHC.CmmToC.html#pprAssign"><span class="hs-identifier hs-var">pprAssign</span></a></span><span> </span><span id="local-6989586621681017998"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017998"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681017997"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017997"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621681017996"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017996"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621681017995"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017995"><span class="hs-identifier hs-var">off</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-893"></span><span>   </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017997"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017996"><span class="hs-identifier hs-var">r2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017995"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#rem"><span class="hs-operator hs-var">`rem`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017994"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-special">)</span><span>
</span><span id="line-894"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var">pprAsPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017997"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var">pprAsPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017996"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017993"><span class="hs-identifier hs-var">op</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017992"><span class="hs-identifier hs-var">off'</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-895"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-896"></span><span>        </span><span id="local-6989586621681017994"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681017994"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017998"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-897"></span><span>        </span><span id="local-6989586621681017991"><span class="annot"><span class="annottext">off1 :: Int
</span><a href="#local-6989586621681017991"><span class="hs-identifier hs-var hs-var">off1</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017995"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftR"><span class="hs-operator hs-var">`shiftR`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="GHC.CmmToC.html#wordShift"><span class="hs-identifier hs-var">wordShift</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017994"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-898"></span><span>
</span><span id="line-899"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621681017993"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017993"><span class="hs-identifier hs-var">op</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621681017992"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017992"><span class="hs-identifier hs-var">off'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017995"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;=</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'+'</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017991"><span class="hs-identifier hs-var">off1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-900"></span><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'-'</span></span><span class="hs-special">,</span><span> </span><span class="hs-glyph">-</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017991"><span class="hs-identifier hs-var">off1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-901"></span><span>
</span><span id="line-902"></span><span class="hs-comment">-- dest is a reg, rhs is anything.</span><span>
</span><span id="line-903"></span><span class="hs-comment">-- We can't cast the lvalue, so we have to cast the rhs if necessary.  Casting</span><span>
</span><span id="line-904"></span><span class="hs-comment">-- the lvalue elicits a warning from new GCC versions (3.4+).</span><span>
</span><span id="line-905"></span><span class="annot"><a href="GHC.CmmToC.html#pprAssign"><span class="hs-identifier hs-var">pprAssign</span></a></span><span> </span><span id="local-6989586621681017990"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017990"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681017989"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017989"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681017988"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017988"><span class="hs-identifier hs-var">r2</span></a></span></span><span>
</span><span id="line-906"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isFixedPtrReg"><span class="hs-identifier hs-var">isFixedPtrReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017989"><span class="hs-identifier hs-var">r1</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="#local-6989586621681017986"><span class="hs-identifier hs-var">mkAssign</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkP_"><span class="hs-identifier hs-var">mkP_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-var">pprExpr1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017990"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017988"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-907"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681017985"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017985"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Maybe SDoc
</span><a href="GHC.CmmToC.html#strangeRegType"><span class="hs-identifier hs-var">strangeRegType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017989"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="#local-6989586621681017986"><span class="hs-identifier hs-var">mkAssign</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017985"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-var">pprExpr1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017990"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017988"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-908"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="#local-6989586621681017986"><span class="hs-identifier hs-var">mkAssign</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017990"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017988"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-909"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681017986"><span class="annot"><span class="annottext">mkAssign :: SDoc -&gt; SDoc
</span><a href="#local-6989586621681017986"><span class="hs-identifier hs-var hs-var">mkAssign</span></a></span></span><span> </span><span id="local-6989586621681017983"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017983"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017989"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmReg -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span>
</span><span id="line-910"></span><span>                       </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ASSIGN_BaseReg&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017983"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-911"></span><span>                       </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprReg"><span class="hs-identifier hs-var">pprReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017989"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; = &quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017983"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-912"></span><span>
</span><span id="line-913"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-914"></span><span class="hs-comment">-- Registers</span><span>
</span><span id="line-915"></span><span>
</span><span id="line-916"></span><span class="annot"><a href="GHC.CmmToC.html#pprCastReg"><span class="hs-identifier hs-type">pprCastReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-917"></span><span id="pprCastReg"><span class="annot"><span class="annottext">pprCastReg :: CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCastReg"><span class="hs-identifier hs-var hs-var">pprCastReg</span></a></span></span><span> </span><span id="local-6989586621681017979"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017979"><span class="hs-identifier hs-var">reg</span></a></span></span><span>
</span><span id="line-918"></span><span>   </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isStrangeTypeReg"><span class="hs-identifier hs-var">isStrangeTypeReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017979"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.CmmToC.html#mkW_"><span class="hs-identifier hs-var">mkW_</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprReg"><span class="hs-identifier hs-var">pprReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017979"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-919"></span><span>   </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprReg"><span class="hs-identifier hs-var">pprReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017979"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-920"></span><span>
</span><span id="line-921"></span><span class="hs-comment">-- True if (pprReg reg) will give an expression with type StgPtr.  We</span><span>
</span><span id="line-922"></span><span class="hs-comment">-- need to take care with pointer arithmetic on registers with type</span><span>
</span><span id="line-923"></span><span class="hs-comment">-- StgPtr.</span><span>
</span><span id="line-924"></span><span class="annot"><a href="GHC.CmmToC.html#isFixedPtrReg"><span class="hs-identifier hs-type">isFixedPtrReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-925"></span><span id="isFixedPtrReg"><span class="annot"><span class="annottext">isFixedPtrReg :: CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isFixedPtrReg"><span class="hs-identifier hs-var hs-var">isFixedPtrReg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-926"></span><span class="annot"><a href="GHC.CmmToC.html#isFixedPtrReg"><span class="hs-identifier hs-var">isFixedPtrReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681017976"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017976"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-var">isFixedPtrGlobalReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017976"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-927"></span><span>
</span><span id="line-928"></span><span class="hs-comment">-- True if (pprAsPtrReg reg) will give an expression with type StgPtr</span><span>
</span><span id="line-929"></span><span class="hs-comment">-- JD: THIS IS HORRIBLE AND SHOULD BE RENAMED, AT THE VERY LEAST.</span><span>
</span><span id="line-930"></span><span class="hs-comment">-- THE GARBAGE WITH THE VNonGcPtr HELPS MATCH THE OLD CODE GENERATOR'S OUTPUT;</span><span>
</span><span id="line-931"></span><span class="hs-comment">-- I'M NOT SURE IF IT SHOULD REALLY STAY THAT WAY.</span><span>
</span><span id="line-932"></span><span class="annot"><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-type">isPtrReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-933"></span><span id="isPtrReg"><span class="annot"><span class="annottext">isPtrReg :: CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var hs-var">isPtrReg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>                         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-934"></span><span class="annot"><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><a href="GHC.Cmm.Expr.html#VGcPtr"><span class="hs-identifier hs-var">VGcPtr</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>  </span><span class="hs-comment">-- if we print via pprAsPtrReg</span><span>
</span><span id="line-935"></span><span class="annot"><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><a href="GHC.Cmm.Expr.html#VNonGcPtr"><span class="hs-identifier hs-var">VNonGcPtr</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-comment">-- if we print via pprAsPtrReg</span><span>
</span><span id="line-936"></span><span class="annot"><a href="GHC.CmmToC.html#isPtrReg"><span class="hs-identifier hs-var">isPtrReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681017971"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017971"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span>                      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-var">isFixedPtrGlobalReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017971"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-937"></span><span>
</span><span id="line-938"></span><span class="hs-comment">-- True if this global reg has type StgPtr</span><span>
</span><span id="line-939"></span><span class="annot"><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-type">isFixedPtrGlobalReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-940"></span><span id="isFixedPtrGlobalReg"><span class="annot"><span class="annottext">isFixedPtrGlobalReg :: GlobalReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-var hs-var">isFixedPtrGlobalReg</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-941"></span><span class="annot"><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-var">isFixedPtrGlobalReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-942"></span><span class="annot"><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-var">isFixedPtrGlobalReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-943"></span><span class="annot"><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-var">isFixedPtrGlobalReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-944"></span><span class="annot"><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-var">isFixedPtrGlobalReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-945"></span><span>
</span><span id="line-946"></span><span class="hs-comment">-- True if in C this register doesn't have the type given by</span><span>
</span><span id="line-947"></span><span class="hs-comment">-- (machRepCType (cmmRegType reg)), so it has to be cast.</span><span>
</span><span id="line-948"></span><span class="annot"><a href="GHC.CmmToC.html#isStrangeTypeReg"><span class="hs-identifier hs-type">isStrangeTypeReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-949"></span><span id="isStrangeTypeReg"><span class="annot"><span class="annottext">isStrangeTypeReg :: CmmReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isStrangeTypeReg"><span class="hs-identifier hs-var hs-var">isStrangeTypeReg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-950"></span><span class="annot"><a href="GHC.CmmToC.html#isStrangeTypeReg"><span class="hs-identifier hs-var">isStrangeTypeReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681017966"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017966"><span class="hs-identifier hs-var">g</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isStrangeTypeGlobal"><span class="hs-identifier hs-var">isStrangeTypeGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017966"><span class="hs-identifier hs-var">g</span></a></span><span>
</span><span id="line-951"></span><span>
</span><span id="line-952"></span><span class="annot"><a href="GHC.CmmToC.html#isStrangeTypeGlobal"><span class="hs-identifier hs-type">isStrangeTypeGlobal</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-953"></span><span id="isStrangeTypeGlobal"><span class="annot"><span class="annottext">isStrangeTypeGlobal :: GlobalReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isStrangeTypeGlobal"><span class="hs-identifier hs-var hs-var">isStrangeTypeGlobal</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-954"></span><span class="annot"><a href="GHC.CmmToC.html#isStrangeTypeGlobal"><span class="hs-identifier hs-var">isStrangeTypeGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-955"></span><span class="annot"><a href="GHC.CmmToC.html#isStrangeTypeGlobal"><span class="hs-identifier hs-var">isStrangeTypeGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-956"></span><span class="annot"><a href="GHC.CmmToC.html#isStrangeTypeGlobal"><span class="hs-identifier hs-var">isStrangeTypeGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-957"></span><span class="annot"><a href="GHC.CmmToC.html#isStrangeTypeGlobal"><span class="hs-identifier hs-var">isStrangeTypeGlobal</span></a></span><span> </span><span id="local-6989586621681017961"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017961"><span class="hs-identifier hs-var">r</span></a></span></span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; Bool
</span><a href="GHC.CmmToC.html#isFixedPtrGlobalReg"><span class="hs-identifier hs-var">isFixedPtrGlobalReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017961"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-958"></span><span>
</span><span id="line-959"></span><span class="annot"><a href="GHC.CmmToC.html#strangeRegType"><span class="hs-identifier hs-type">strangeRegType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-960"></span><span id="strangeRegType"><span class="annot"><span class="annottext">strangeRegType :: CmmReg -&gt; Maybe SDoc
</span><a href="GHC.CmmToC.html#strangeRegType"><span class="hs-identifier hs-var hs-var">strangeRegType</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Maybe SDoc
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;struct CostCentreStack_ *&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-961"></span><span class="annot"><a href="GHC.CmmToC.html#strangeRegType"><span class="hs-identifier hs-var">strangeRegType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Maybe SDoc
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;struct StgTSO_ *&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-962"></span><span class="annot"><a href="GHC.CmmToC.html#strangeRegType"><span class="hs-identifier hs-var">strangeRegType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Maybe SDoc
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;struct bdescr_ *&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-963"></span><span class="annot"><a href="GHC.CmmToC.html#strangeRegType"><span class="hs-identifier hs-var">strangeRegType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Maybe SDoc
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;struct StgRegTable_ *&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-964"></span><span class="annot"><a href="GHC.CmmToC.html#strangeRegType"><span class="hs-identifier hs-var">strangeRegType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe SDoc
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-965"></span><span>
</span><span id="line-966"></span><span class="hs-comment">-- pprReg just prints the register name.</span><span>
</span><span id="line-967"></span><span class="hs-comment">--</span><span>
</span><span id="line-968"></span><span class="annot"><a href="GHC.CmmToC.html#pprReg"><span class="hs-identifier hs-type">pprReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-969"></span><span id="pprReg"><span class="annot"><span class="annottext">pprReg :: CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprReg"><span class="hs-identifier hs-var hs-var">pprReg</span></a></span></span><span> </span><span id="local-6989586621681017960"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017960"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017960"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-970"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span>  </span><span id="local-6989586621681017959"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017959"><span class="hs-identifier hs-var">local</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">LocalReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLocalReg"><span class="hs-identifier hs-var">pprLocalReg</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017959"><span class="hs-identifier hs-var">local</span></a></span><span>
</span><span id="line-971"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681017957"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017957"><span class="hs-identifier hs-var">global</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprGlobalReg"><span class="hs-identifier hs-var">pprGlobalReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017957"><span class="hs-identifier hs-var">global</span></a></span><span>
</span><span id="line-972"></span><span>
</span><span id="line-973"></span><span class="annot"><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-type">pprAsPtrReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-974"></span><span id="pprAsPtrReg"><span class="annot"><span class="annottext">pprAsPtrReg :: CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var hs-var">pprAsPtrReg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span id="local-6989586621681017955"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017955"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621681017954"><span class="annot"><span class="annottext">VGcPtr
</span><a href="#local-6989586621681017954"><span class="hs-identifier hs-var">gcp</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-975"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">WARN</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">gcp</span><span> </span><span class="hs-operator">/=</span><span> </span><span class="hs-identifier">VGcPtr</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">n</span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-identifier">char</span><span> </span><span class="hs-char">'R'</span><span> </span><span class="hs-operator">&lt;&gt;</span><span> </span><span class="hs-identifier">int</span><span> </span><span class="hs-identifier">n</span><span> </span><span class="hs-operator">&lt;&gt;</span><span> </span><span class="hs-identifier">text</span><span> </span><span class="hs-string">&quot;.p&quot;</span><span>
</span><span id="line-976"></span><span class="annot"><a href="GHC.CmmToC.html#pprAsPtrReg"><span class="hs-identifier hs-var">pprAsPtrReg</span></a></span><span> </span><span id="local-6989586621681017952"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017952"><span class="hs-identifier hs-var">other_reg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprReg"><span class="hs-identifier hs-var">pprReg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017952"><span class="hs-identifier hs-var">other_reg</span></a></span><span>
</span><span id="line-977"></span><span>
</span><span id="line-978"></span><span class="annot"><a href="GHC.CmmToC.html#pprGlobalReg"><span class="hs-identifier hs-type">pprGlobalReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-979"></span><span id="pprGlobalReg"><span class="annot"><span class="annottext">pprGlobalReg :: GlobalReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprGlobalReg"><span class="hs-identifier hs-var hs-var">pprGlobalReg</span></a></span></span><span> </span><span id="local-6989586621681017951"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017951"><span class="hs-identifier hs-var">gr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017951"><span class="hs-identifier hs-var">gr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-980"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span id="local-6989586621681017950"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017950"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'R'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017950"><span class="hs-identifier hs-var">n</span></a></span><span>  </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;.w&quot;</span></span><span>
</span><span id="line-981"></span><span>        </span><span class="hs-comment">-- pprGlobalReg prints a VanillaReg as a .w regardless</span><span>
</span><span id="line-982"></span><span>        </span><span class="hs-comment">-- Example:     R1.w = R1.w &amp; (-0x8UL);</span><span>
</span><span id="line-983"></span><span>        </span><span class="hs-comment">--              JMP_(*R1.p);</span><span>
</span><span id="line-984"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>   </span><span id="local-6989586621681017948"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017948"><span class="hs-identifier hs-var">n</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'F'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017948"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-985"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span>  </span><span id="local-6989586621681017946"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017946"><span class="hs-identifier hs-var">n</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'D'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017946"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-986"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span>    </span><span id="local-6989586621681017944"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017944"><span class="hs-identifier hs-var">n</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'L'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017944"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-987"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Sp&quot;</span></span><span>
</span><span id="line-988"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;SpLim&quot;</span></span><span>
</span><span id="line-989"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Hp&quot;</span></span><span>
</span><span id="line-990"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;HpLim&quot;</span></span><span>
</span><span id="line-991"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CCCS&quot;</span></span><span>
</span><span id="line-992"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CurrentTSO&quot;</span></span><span>
</span><span id="line-993"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CurrentNursery&quot;</span></span><span>
</span><span id="line-994"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;HpAlloc&quot;</span></span><span>
</span><span id="line-995"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;BaseReg&quot;</span></span><span>
</span><span id="line-996"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;stg_EAGER_BLACKHOLE_info&quot;</span></span><span>
</span><span id="line-997"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;stg_gc_enter_1&quot;</span></span><span>
</span><span id="line-998"></span><span>    </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;stg_gc_fun&quot;</span></span><span>
</span><span id="line-999"></span><span>    </span><span id="local-6989586621681017939"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017939"><span class="hs-identifier hs-var">other</span></a></span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprGlobalReg: Unsupported register: &quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681017939"><span class="hs-identifier hs-var">other</span></a></span><span>
</span><span id="line-1000"></span><span>
</span><span id="line-1001"></span><span class="annot"><a href="GHC.CmmToC.html#pprLocalReg"><span class="hs-identifier hs-type">pprLocalReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1002"></span><span id="pprLocalReg"><span class="annot"><span class="annottext">pprLocalReg :: LocalReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLocalReg"><span class="hs-identifier hs-var hs-var">pprLocalReg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span id="local-6989586621681017937"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621681017937"><span class="hs-identifier hs-var">uniq</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'_'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Unique -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621681017937"><span class="hs-identifier hs-var">uniq</span></a></span><span>
</span><span id="line-1003"></span><span>
</span><span id="line-1004"></span><span class="hs-comment">-- -----------------------------------------------------------------------------</span><span>
</span><span id="line-1005"></span><span class="hs-comment">-- Foreign Calls</span><span>
</span><span id="line-1006"></span><span>
</span><span id="line-1007"></span><span class="annot"><a href="GHC.CmmToC.html#pprCall"><span class="hs-identifier hs-type">pprCall</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html#CCallConv"><span class="hs-identifier hs-type">CCallConv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToC.html#Hinted"><span class="hs-identifier hs-type">Hinted</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmFormal"><span class="hs-identifier hs-type">CmmFormal</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.CmmToC.html#Hinted"><span class="hs-identifier hs-type">Hinted</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmActual"><span class="hs-identifier hs-type">CmmActual</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1008"></span><span id="pprCall"><span class="annot"><span class="annottext">pprCall :: DynFlags
-&gt; SDoc
-&gt; CCallConv
-&gt; [(LocalReg, ForeignHint)]
-&gt; [(CmmExpr, ForeignHint)]
-&gt; SDoc
</span><a href="GHC.CmmToC.html#pprCall"><span class="hs-identifier hs-var hs-var">pprCall</span></a></span></span><span> </span><span id="local-6989586621681017936"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017936"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681017935"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017935"><span class="hs-identifier hs-var">ppr_fn</span></a></span></span><span> </span><span id="local-6989586621681017934"><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681017934"><span class="hs-identifier hs-var">cconv</span></a></span></span><span> </span><span id="local-6989586621681017933"><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681017933"><span class="hs-identifier hs-var">results</span></a></span></span><span> </span><span id="local-6989586621681017932"><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681017932"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-1009"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CCallConv -&gt; Bool
</span><a href="GHC.CmmToC.html#is_cishCC"><span class="hs-identifier hs-var">is_cishCC</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="#local-6989586621681017934"><span class="hs-identifier hs-var">cconv</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1010"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; SDoc) -&gt; String -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprCall: unknown calling convention&quot;</span></span><span>
</span><span id="line-1011"></span><span>
</span><span id="line-1012"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-1013"></span><span>  </span><span class="hs-glyph">=</span><span>
</span><span id="line-1014"></span><span>    </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)] -&gt; SDoc -&gt; SDoc
</span><a href="#local-6989586621681017930"><span class="hs-identifier hs-var">ppr_assign</span></a></span><span> </span><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681017933"><span class="hs-identifier hs-var">results</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017935"><span class="hs-identifier hs-var">ppr_fn</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.CmmToC.html#commafy"><span class="hs-identifier hs-var">commafy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">((CmmExpr, ForeignHint) -&gt; SDoc)
-&gt; [(CmmExpr, ForeignHint)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmExpr, ForeignHint) -&gt; SDoc
</span><a href="#local-6989586621681017929"><span class="hs-identifier hs-var">pprArg</span></a></span><span> </span><span class="annot"><span class="annottext">[(CmmExpr, ForeignHint)]
</span><a href="#local-6989586621681017932"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-1015"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1016"></span><span>     </span><span id="local-6989586621681017928"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681017928"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017936"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-1017"></span><span>
</span><span id="line-1018"></span><span>     </span><span id="local-6989586621681017930"><span class="annot"><span class="annottext">ppr_assign :: [(LocalReg, ForeignHint)] -&gt; SDoc -&gt; SDoc
</span><a href="#local-6989586621681017930"><span class="hs-identifier hs-var hs-var">ppr_assign</span></a></span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>           </span><span id="local-6989586621681017927"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017927"><span class="hs-identifier hs-var">rhs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017927"><span class="hs-identifier hs-var">rhs</span></a></span><span>
</span><span id="line-1019"></span><span>     </span><span class="annot"><a href="#local-6989586621681017930"><span class="hs-identifier hs-var">ppr_assign</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span id="local-6989586621681017926"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017926"><span class="hs-identifier hs-var">one</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621681017925"><span class="annot"><span class="annottext">ForeignHint
</span><a href="#local-6989586621681017925"><span class="hs-identifier hs-var">hint</span></a></span></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span id="local-6989586621681017924"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017924"><span class="hs-identifier hs-var">rhs</span></a></span></span><span>
</span><span id="line-1020"></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LocalReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLocalReg"><span class="hs-identifier hs-var">pprLocalReg</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017926"><span class="hs-identifier hs-var">one</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; = &quot;</span></span><span>
</span><span id="line-1021"></span><span>                 </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignHint -&gt; CmmType -&gt; SDoc
</span><a href="#local-6989586621681017923"><span class="hs-identifier hs-var">pprUnHint</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="#local-6989586621681017925"><span class="hs-identifier hs-var">hint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LocalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#localRegType"><span class="hs-identifier hs-var">localRegType</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017926"><span class="hs-identifier hs-var">one</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017924"><span class="hs-identifier hs-var">rhs</span></a></span><span>
</span><span id="line-1022"></span><span>     </span><span class="annot"><a href="#local-6989586621681017930"><span class="hs-identifier hs-var">ppr_assign</span></a></span><span> </span><span id="local-6989586621681017922"><span class="annot"><span class="annottext">[(LocalReg, ForeignHint)]
</span><a href="#local-6989586621681017922"><span class="hs-identifier hs-var">_other</span></a></span></span><span> </span><span id="local-6989586621681017921"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017921"><span class="hs-identifier hs-var">_rhs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprCall: multiple results&quot;</span></span><span>
</span><span id="line-1023"></span><span>
</span><span id="line-1024"></span><span>     </span><span id="local-6989586621681017929"><span class="annot"><span class="annottext">pprArg :: (CmmExpr, ForeignHint) -&gt; SDoc
</span><a href="#local-6989586621681017929"><span class="hs-identifier hs-var hs-var">pprArg</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681017920"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017920"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#AddrHint"><span class="hs-identifier hs-var">AddrHint</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1025"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; SDoc -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#cCast"><span class="hs-identifier hs-var">cCast</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017936"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;void *&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017920"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-1026"></span><span>        </span><span class="hs-comment">-- see comment by machRepHintCType below</span><span>
</span><span id="line-1027"></span><span>     </span><span class="annot"><a href="#local-6989586621681017929"><span class="hs-identifier hs-var">pprArg</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681017918"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017918"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#SignedHint"><span class="hs-identifier hs-var">SignedHint</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1028"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; SDoc -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#cCast"><span class="hs-identifier hs-var">cCast</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017936"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_S_CType"><span class="hs-identifier hs-var">machRep_S_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017928"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">(Width -&gt; SDoc) -&gt; Width -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmType -&gt; Width) -&gt; CmmType -&gt; Width
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var">cmmExprType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017928"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017918"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017918"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-1029"></span><span>     </span><span class="annot"><a href="#local-6989586621681017929"><span class="hs-identifier hs-var">pprArg</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681017916"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017916"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681017915"><span class="annot"><span class="annottext">ForeignHint
</span><a href="#local-6989586621681017915"><span class="hs-identifier hs-var">_other</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1030"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017936"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017916"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-1031"></span><span>
</span><span id="line-1032"></span><span>     </span><span id="local-6989586621681017923"><span class="annot"><span class="annottext">pprUnHint :: ForeignHint -&gt; CmmType -&gt; SDoc
</span><a href="#local-6989586621681017923"><span class="hs-identifier hs-var hs-var">pprUnHint</span></a></span></span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#AddrHint"><span class="hs-identifier hs-var">AddrHint</span></a></span><span>   </span><span id="local-6989586621681017914"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017914"><span class="hs-identifier hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepCType"><span class="hs-identifier hs-var">machRepCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017928"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017914"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1033"></span><span>     </span><span class="annot"><a href="#local-6989586621681017923"><span class="hs-identifier hs-var">pprUnHint</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#SignedHint"><span class="hs-identifier hs-var">SignedHint</span></a></span><span> </span><span id="local-6989586621681017912"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017912"><span class="hs-identifier hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepCType"><span class="hs-identifier hs-var">machRepCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017928"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017912"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1034"></span><span>     </span><span class="annot"><a href="#local-6989586621681017923"><span class="hs-identifier hs-var">pprUnHint</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignHint
</span><span class="hs-identifier">_</span></span><span>          </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-1035"></span><span>
</span><span id="line-1036"></span><span class="hs-comment">-- Currently we only have these two calling conventions, but this might</span><span>
</span><span id="line-1037"></span><span class="hs-comment">-- change in the future...</span><span>
</span><span id="line-1038"></span><span class="annot"><a href="GHC.CmmToC.html#is_cishCC"><span class="hs-identifier hs-type">is_cishCC</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html#CCallConv"><span class="hs-identifier hs-type">CCallConv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-1039"></span><span id="is_cishCC"><span class="annot"><span class="annottext">is_cishCC :: CCallConv -&gt; Bool
</span><a href="GHC.CmmToC.html#is_cishCC"><span class="hs-identifier hs-var hs-var">is_cishCC</span></a></span></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="GHC.Types.ForeignCall.html#CCallConv"><span class="hs-identifier hs-var">CCallConv</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1040"></span><span class="annot"><a href="GHC.CmmToC.html#is_cishCC"><span class="hs-identifier hs-var">is_cishCC</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="GHC.Types.ForeignCall.html#CApiConv"><span class="hs-identifier hs-var">CApiConv</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1041"></span><span class="annot"><a href="GHC.CmmToC.html#is_cishCC"><span class="hs-identifier hs-var">is_cishCC</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="GHC.Types.ForeignCall.html#StdCallConv"><span class="hs-identifier hs-var">StdCallConv</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1042"></span><span class="annot"><a href="GHC.CmmToC.html#is_cishCC"><span class="hs-identifier hs-var">is_cishCC</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="GHC.Types.ForeignCall.html#PrimCallConv"><span class="hs-identifier hs-var">PrimCallConv</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1043"></span><span class="annot"><a href="GHC.CmmToC.html#is_cishCC"><span class="hs-identifier hs-var">is_cishCC</span></a></span><span> </span><span class="annot"><span class="annottext">CCallConv
</span><a href="GHC.Types.ForeignCall.html#JavaScriptCallConv"><span class="hs-identifier hs-var">JavaScriptCallConv</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1044"></span><span>
</span><span id="line-1045"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-1046"></span><span class="hs-comment">-- Find and print local and external declarations for a list of</span><span>
</span><span id="line-1047"></span><span class="hs-comment">-- Cmm statements.</span><span>
</span><span id="line-1048"></span><span class="hs-comment">--</span><span>
</span><span id="line-1049"></span><span class="annot"><a href="GHC.CmmToC.html#pprTempAndExternDecls"><span class="hs-identifier hs-type">pprTempAndExternDecls</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span class="hs-comment">{-temps-}</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span class="hs-comment">{-externs-}</span><span class="hs-special">)</span><span>
</span><span id="line-1050"></span><span id="pprTempAndExternDecls"><span class="annot"><span class="annottext">pprTempAndExternDecls :: Platform -&gt; [CmmBlock] -&gt; (SDoc, SDoc)
</span><a href="GHC.CmmToC.html#pprTempAndExternDecls"><span class="hs-identifier hs-var hs-var">pprTempAndExternDecls</span></a></span></span><span> </span><span id="local-6989586621681017908"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017908"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017907"><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681017907"><span class="hs-identifier hs-var">stmts</span></a></span></span><span>
</span><span id="line-1051"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UniqFM LocalReg LocalReg -&gt; ([LocalReg] -&gt; SDoc) -&gt; SDoc
forall key a. UniqFM key a -&gt; ([a] -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Types.Unique.FM.html#pprUFM"><span class="hs-identifier hs-var">pprUFM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UniqSet LocalReg -&gt; UniqFM LocalReg LocalReg
forall a. UniqSet a -&gt; UniqFM a a
</span><a href="GHC.Types.Unique.Set.html#getUniqSet"><span class="hs-identifier hs-var">getUniqSet</span></a></span><span> </span><span class="annot"><span class="annottext">UniqSet LocalReg
</span><a href="#local-6989586621681017904"><span class="hs-identifier hs-var">temps</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; ([LocalReg] -&gt; [SDoc]) -&gt; [LocalReg] -&gt; SDoc
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(LocalReg -&gt; SDoc) -&gt; [LocalReg] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; LocalReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprTempDecl"><span class="hs-identifier hs-var">pprTempDecl</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017908"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-1052"></span><span>     </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CLabel -&gt; SDoc) -&gt; [CLabel] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExternDecl"><span class="hs-identifier hs-var">pprExternDecl</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017908"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Map CLabel () -&gt; [CLabel]
forall k a. Map k a -&gt; [k]
</span><a href="../../containers/src/Data.Map.Internal.html#keys"><span class="hs-identifier hs-var">Map.keys</span></a></span><span> </span><span class="annot"><span class="annottext">Map CLabel ()
</span><a href="#local-6989586621681017900"><span class="hs-identifier hs-var">lbls</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1053"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681017904"><span class="annot"><span class="annottext">UniqSet LocalReg
</span><a href="#local-6989586621681017904"><span class="hs-identifier hs-var">temps</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681017900"><span class="annot"><span class="annottext">Map CLabel ()
</span><a href="#local-6989586621681017900"><span class="hs-identifier hs-var">lbls</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TE () -&gt; (UniqSet LocalReg, Map CLabel ())
</span><a href="GHC.CmmToC.html#runTE"><span class="hs-identifier hs-var">runTE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmBlock -&gt; TE ()) -&gt; [CmmBlock] -&gt; TE ()
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Foldable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m ()
</span><a href="../../base/src/Data.Foldable.html#mapM_"><span class="hs-identifier hs-var">mapM_</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_BB"><span class="hs-identifier hs-var">te_BB</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmBlock]
</span><a href="#local-6989586621681017907"><span class="hs-identifier hs-var">stmts</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1054"></span><span>
</span><span id="line-1055"></span><span class="annot"><a href="GHC.CmmToC.html#pprDataExterns"><span class="hs-identifier hs-type">pprDataExterns</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmStatic"><span class="hs-identifier hs-type">CmmStatic</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1056"></span><span id="pprDataExterns"><span class="annot"><span class="annottext">pprDataExterns :: Platform -&gt; [CmmStatic] -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprDataExterns"><span class="hs-identifier hs-var hs-var">pprDataExterns</span></a></span></span><span> </span><span id="local-6989586621681017896"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017896"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017895"><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681017895"><span class="hs-identifier hs-var">statics</span></a></span></span><span>
</span><span id="line-1057"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CLabel -&gt; SDoc) -&gt; [CLabel] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExternDecl"><span class="hs-identifier hs-var">pprExternDecl</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017896"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Map CLabel () -&gt; [CLabel]
forall k a. Map k a -&gt; [k]
</span><a href="../../containers/src/Data.Map.Internal.html#keys"><span class="hs-identifier hs-var">Map.keys</span></a></span><span> </span><span class="annot"><span class="annottext">Map CLabel ()
</span><a href="#local-6989586621681017894"><span class="hs-identifier hs-var">lbls</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1058"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UniqSet LocalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681017894"><span class="annot"><span class="annottext">Map CLabel ()
</span><a href="#local-6989586621681017894"><span class="hs-identifier hs-var">lbls</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TE () -&gt; (UniqSet LocalReg, Map CLabel ())
</span><a href="GHC.CmmToC.html#runTE"><span class="hs-identifier hs-var">runTE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmStatic -&gt; TE ()) -&gt; [CmmStatic] -&gt; TE ()
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Foldable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m ()
</span><a href="../../base/src/Data.Foldable.html#mapM_"><span class="hs-identifier hs-var">mapM_</span></a></span><span> </span><span class="annot"><span class="annottext">CmmStatic -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Static"><span class="hs-identifier hs-var">te_Static</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmStatic]
</span><a href="#local-6989586621681017895"><span class="hs-identifier hs-var">statics</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1059"></span><span>
</span><span id="line-1060"></span><span class="annot"><a href="GHC.CmmToC.html#pprTempDecl"><span class="hs-identifier hs-type">pprTempDecl</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1061"></span><span id="pprTempDecl"><span class="annot"><span class="annottext">pprTempDecl :: Platform -&gt; LocalReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprTempDecl"><span class="hs-identifier hs-var hs-var">pprTempDecl</span></a></span></span><span> </span><span id="local-6989586621681017892"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017892"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017891"><span class="annot"><span class="annottext">l :: LocalReg
</span><a href="#local-6989586621681017891"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681017890"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017890"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1062"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepCType"><span class="hs-identifier hs-var">machRepCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017892"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017890"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#space"><span class="hs-identifier hs-var">space</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">LocalReg -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprLocalReg"><span class="hs-identifier hs-var">pprLocalReg</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017891"><span class="hs-identifier hs-var">l</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-1063"></span><span>
</span><span id="line-1064"></span><span class="annot"><a href="GHC.CmmToC.html#pprExternDecl"><span class="hs-identifier hs-type">pprExternDecl</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1065"></span><span id="pprExternDecl"><span class="annot"><span class="annottext">pprExternDecl :: Platform -&gt; CLabel -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExternDecl"><span class="hs-identifier hs-var hs-var">pprExternDecl</span></a></span></span><span> </span><span id="local-6989586621681017889"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017889"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017888"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017888"><span class="hs-identifier hs-var">lbl</span></a></span></span><span>
</span><span id="line-1066"></span><span>  </span><span class="hs-comment">-- do not print anything for &quot;known external&quot; things</span><span>
</span><span id="line-1067"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#needsCDecl"><span class="hs-identifier hs-var">needsCDecl</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017888"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-1068"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681017886"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017886"><span class="hs-identifier hs-var">sz</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Maybe Int
</span><a href="GHC.Cmm.CLabel.html#foreignLabelStdcallInfo"><span class="hs-identifier hs-var">foreignLabelStdcallInfo</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017888"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="#local-6989586621681017884"><span class="hs-identifier hs-var">stdcall_decl</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017886"><span class="hs-identifier hs-var">sz</span></a></span><span>
</span><span id="line-1069"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1070"></span><span>        </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017883"><span class="hs-identifier hs-var">visibility</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
</span><a href="#local-6989586621681017882"><span class="hs-identifier hs-var">label_type</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017888"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#lparen"><span class="hs-identifier hs-var">lparen</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017888"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;);&quot;</span></span><span>
</span><span id="line-1071"></span><span>             </span><span class="hs-comment">-- occasionally useful to see label type</span><span>
</span><span id="line-1072"></span><span>             </span><span class="hs-comment">-- , text &quot;/* &quot;, pprDebugCLabel lbl, text &quot; */&quot;</span><span>
</span><span id="line-1073"></span><span>             </span><span class="hs-special">]</span><span>
</span><span id="line-1074"></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-1075"></span><span>  </span><span id="local-6989586621681017882"><span class="annot"><span class="annottext">label_type :: CLabel -&gt; SDoc
</span><a href="#local-6989586621681017882"><span class="hs-identifier hs-var hs-var">label_type</span></a></span></span><span> </span><span id="local-6989586621681017880"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017880"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#isBytesLabel"><span class="hs-identifier hs-var">isBytesLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017880"><span class="hs-identifier hs-var">lbl</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;B_&quot;</span></span><span>
</span><span id="line-1076"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#isForeignLabel"><span class="hs-identifier hs-var">isForeignLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017880"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#isCFunctionLabel"><span class="hs-identifier hs-var">isCFunctionLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017880"><span class="hs-identifier hs-var">lbl</span></a></span><span>
</span><span id="line-1077"></span><span>                                            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;FF_&quot;</span></span><span>
</span><span id="line-1078"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#isCFunctionLabel"><span class="hs-identifier hs-var">isCFunctionLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017880"><span class="hs-identifier hs-var">lbl</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;F_&quot;</span></span><span>
</span><span id="line-1079"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#isStaticClosureLabel"><span class="hs-identifier hs-var">isStaticClosureLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017880"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;C_&quot;</span></span><span>
</span><span id="line-1080"></span><span>                 </span><span class="hs-comment">-- generic .rodata labels</span><span>
</span><span id="line-1081"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#isSomeRODataLabel"><span class="hs-identifier hs-var">isSomeRODataLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017880"><span class="hs-identifier hs-var">lbl</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;RO_&quot;</span></span><span>
</span><span id="line-1082"></span><span>                 </span><span class="hs-comment">-- generic .data labels (common case)</span><span>
</span><span id="line-1083"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;RW_&quot;</span></span><span>
</span><span id="line-1084"></span><span>
</span><span id="line-1085"></span><span>  </span><span id="local-6989586621681017883"><span class="annot"><span class="annottext">visibility :: SDoc
</span><a href="#local-6989586621681017883"><span class="hs-identifier hs-var hs-var">visibility</span></a></span></span><span>
</span><span id="line-1086"></span><span>     </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#externallyVisibleCLabel"><span class="hs-identifier hs-var">externallyVisibleCLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017888"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'E'</span></span><span>
</span><span id="line-1087"></span><span>     </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'I'</span></span><span>
</span><span id="line-1088"></span><span>
</span><span id="line-1089"></span><span>  </span><span class="hs-comment">-- If the label we want to refer to is a stdcall function (on Windows) then</span><span>
</span><span id="line-1090"></span><span>  </span><span class="hs-comment">-- we must generate an appropriate prototype for it, so that the C compiler will</span><span>
</span><span id="line-1091"></span><span>  </span><span class="hs-comment">-- add the @n suffix to the label (#2276)</span><span>
</span><span id="line-1092"></span><span>  </span><span id="local-6989586621681017884"><span class="annot"><span class="annottext">stdcall_decl :: Int -&gt; SDoc
</span><a href="#local-6989586621681017884"><span class="hs-identifier hs-var hs-var">stdcall_decl</span></a></span></span><span> </span><span id="local-6989586621681017874"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017874"><span class="hs-identifier hs-var">sz</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1093"></span><span>        </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;extern __attribute__((stdcall)) void &quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017888"><span class="hs-identifier hs-var">lbl</span></a></span><span>
</span><span id="line-1094"></span><span>        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.CmmToC.html#commafy"><span class="hs-identifier hs-var">commafy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; [SDoc]
forall a. Int -&gt; a -&gt; [a]
</span><a href="../../base/src/GHC.List.html#replicate"><span class="hs-identifier hs-var">replicate</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017874"><span class="hs-identifier hs-var">sz</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#quot"><span class="hs-operator hs-var">`quot`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Int
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017889"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_U_CType"><span class="hs-identifier hs-var">machRep_U_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017889"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017889"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1095"></span><span>        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-1096"></span><span>
</span><span id="line-1097"></span><span class="hs-keyword">type</span><span> </span><span id="TEState"><span class="annot"><a href="GHC.CmmToC.html#TEState"><span class="hs-identifier hs-var">TEState</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Unique.Set.html#UniqSet"><span class="hs-identifier hs-type">UniqSet</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1098"></span><span class="hs-keyword">newtype</span><span> </span><span id="TE"><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-var">TE</span></a></span></span><span> </span><span id="local-6989586621681018903"><span class="annot"><a href="#local-6989586621681018903"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="TE"><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-var">TE</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="unTE"><span class="annot"><span class="annottext">forall a.
TE a
-&gt; (UniqSet LocalReg, Map CLabel ())
-&gt; (a, (UniqSet LocalReg, Map CLabel ()))
</span><a href="GHC.CmmToC.html#unTE"><span class="hs-identifier hs-var hs-var">unTE</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TEState"><span class="hs-identifier hs-type">TEState</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621681018903"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TEState"><span class="hs-identifier hs-type">TEState</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681017865"><span id="local-6989586621681017867"><span class="annot"><span class="annottext">(forall a b. (a -&gt; b) -&gt; TE a -&gt; TE b)
-&gt; (forall a b. a -&gt; TE b -&gt; TE a) -&gt; Functor TE
forall a b. a -&gt; TE b -&gt; TE a
forall a b. (a -&gt; b) -&gt; TE a -&gt; TE b
forall (f :: * -&gt; *).
(forall a b. (a -&gt; b) -&gt; f a -&gt; f b)
-&gt; (forall a b. a -&gt; f b -&gt; f a) -&gt; Functor f
&lt;$ :: forall a b. a -&gt; TE b -&gt; TE a
$c&lt;$ :: forall a b. a -&gt; TE b -&gt; TE a
fmap :: forall a b. (a -&gt; b) -&gt; TE a -&gt; TE b
$cfmap :: forall a b. (a -&gt; b) -&gt; TE a -&gt; TE b
</span><a href="../../base/src/GHC.Base.html#Functor"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Functor</span></a></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-1099"></span><span>
</span><span id="line-1100"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621681017853"><span id="local-6989586621681017855"><span id="local-6989586621681017857"><span class="annot"><a href="../../base/src/GHC.Base.html#Applicative"><span class="hs-identifier hs-type">Applicative</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-1101"></span><span>      </span><span id="local-6989586621681017851"><span class="annot"><span class="annottext">pure :: forall a. a -&gt; TE a
</span><a href="../../base/src/GHC.Base.html#pure"><span class="hs-identifier hs-var hs-var hs-var hs-var">pure</span></a></span></span><span> </span><span id="local-6989586621681017850"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681017850"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((UniqSet LocalReg, Map CLabel ())
 -&gt; (a, (UniqSet LocalReg, Map CLabel ())))
-&gt; TE a
forall a.
((UniqSet LocalReg, Map CLabel ())
 -&gt; (a, (UniqSet LocalReg, Map CLabel ())))
-&gt; TE a
</span><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-var">TE</span></a></span><span> </span><span class="annot"><span class="annottext">(((UniqSet LocalReg, Map CLabel ())
  -&gt; (a, (UniqSet LocalReg, Map CLabel ())))
 -&gt; TE a)
-&gt; ((UniqSet LocalReg, Map CLabel ())
    -&gt; (a, (UniqSet LocalReg, Map CLabel ())))
-&gt; TE a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span id="local-6989586621681017849"><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
</span><a href="#local-6989586621681017849"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681017850"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
</span><a href="#local-6989586621681017849"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1102"></span><span>      </span><span id="local-6989586621681017847"><span class="annot"><span class="annottext">&lt;*&gt; :: forall a b. TE (a -&gt; b) -&gt; TE a -&gt; TE b
</span><a href="../../base/src/GHC.Base.html#%3C%2A%3E"><span class="hs-operator hs-var hs-var hs-var hs-var">(&lt;*&gt;)</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TE (a -&gt; b) -&gt; TE a -&gt; TE b
forall (m :: * -&gt; *) a b. Monad m =&gt; m (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="../../base/src/GHC.Base.html#ap"><span class="hs-identifier hs-var">ap</span></a></span><span>
</span><span id="line-1103"></span><span>
</span><span id="line-1104"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621681017840"><span id="local-6989586621681017842"><span class="annot"><a href="../../base/src/GHC.Base.html#Monad"><span class="hs-identifier hs-type">Monad</span></a></span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-1105"></span><span>   </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span id="local-6989586621681017838"><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
-&gt; (a, (UniqSet LocalReg, Map CLabel ()))
</span><a href="#local-6989586621681017838"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621681017837"><span class="annot"><span class="annottext">&gt;&gt;= :: forall a b. TE a -&gt; (a -&gt; TE b) -&gt; TE b
</span><a href="../../base/src/GHC.Base.html#%3E%3E%3D"><span class="hs-operator hs-var hs-var hs-var hs-var">&gt;&gt;=</span></a></span></span><span> </span><span id="local-6989586621681017836"><span class="annot"><span class="annottext">a -&gt; TE b
</span><a href="#local-6989586621681017836"><span class="hs-identifier hs-var">k</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((UniqSet LocalReg, Map CLabel ())
 -&gt; (b, (UniqSet LocalReg, Map CLabel ())))
-&gt; TE b
forall a.
((UniqSet LocalReg, Map CLabel ())
 -&gt; (a, (UniqSet LocalReg, Map CLabel ())))
-&gt; TE a
</span><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-var">TE</span></a></span><span> </span><span class="annot"><span class="annottext">(((UniqSet LocalReg, Map CLabel ())
  -&gt; (b, (UniqSet LocalReg, Map CLabel ())))
 -&gt; TE b)
-&gt; ((UniqSet LocalReg, Map CLabel ())
    -&gt; (b, (UniqSet LocalReg, Map CLabel ())))
-&gt; TE b
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span id="local-6989586621681017835"><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
</span><a href="#local-6989586621681017835"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
-&gt; (a, (UniqSet LocalReg, Map CLabel ()))
</span><a href="#local-6989586621681017838"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
</span><a href="#local-6989586621681017835"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="hs-keyword">of</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681017834"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681017834"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681017833"><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
</span><a href="#local-6989586621681017833"><span class="hs-identifier hs-var">s'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TE b
-&gt; (UniqSet LocalReg, Map CLabel ())
-&gt; (b, (UniqSet LocalReg, Map CLabel ()))
forall a.
TE a
-&gt; (UniqSet LocalReg, Map CLabel ())
-&gt; (a, (UniqSet LocalReg, Map CLabel ()))
</span><a href="GHC.CmmToC.html#unTE"><span class="hs-identifier hs-var hs-var">unTE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a -&gt; TE b
</span><a href="#local-6989586621681017836"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681017834"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
</span><a href="#local-6989586621681017833"><span class="hs-identifier hs-var">s'</span></a></span><span>
</span><span id="line-1106"></span><span>
</span><span id="line-1107"></span><span class="annot"><a href="GHC.CmmToC.html#te_lbl"><span class="hs-identifier hs-type">te_lbl</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1108"></span><span id="te_lbl"><span class="annot"><span class="annottext">te_lbl :: CLabel -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_lbl"><span class="hs-identifier hs-var hs-var">te_lbl</span></a></span></span><span> </span><span id="local-6989586621681017831"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017831"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((UniqSet LocalReg, Map CLabel ())
 -&gt; ((), (UniqSet LocalReg, Map CLabel ())))
-&gt; TE ()
forall a.
((UniqSet LocalReg, Map CLabel ())
 -&gt; (a, (UniqSet LocalReg, Map CLabel ())))
-&gt; TE a
</span><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-var">TE</span></a></span><span> </span><span class="annot"><span class="annottext">(((UniqSet LocalReg, Map CLabel ())
  -&gt; ((), (UniqSet LocalReg, Map CLabel ())))
 -&gt; TE ())
-&gt; ((UniqSet LocalReg, Map CLabel ())
    -&gt; ((), (UniqSet LocalReg, Map CLabel ())))
-&gt; TE ()
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span class="hs-special">(</span><span id="local-6989586621681017830"><span class="annot"><span class="annottext">UniqSet LocalReg
</span><a href="#local-6989586621681017830"><span class="hs-identifier hs-var">temps</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621681017829"><span class="annot"><span class="annottext">Map CLabel ()
</span><a href="#local-6989586621681017829"><span class="hs-identifier hs-var">lbls</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UniqSet LocalReg
</span><a href="#local-6989586621681017830"><span class="hs-identifier hs-var">temps</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; () -&gt; Map CLabel () -&gt; Map CLabel ()
forall k a. Ord k =&gt; k -&gt; a -&gt; Map k a -&gt; Map k a
</span><a href="../../containers/src/Data.Map.Internal.html#insert"><span class="hs-identifier hs-var">Map.insert</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017831"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Map CLabel ()
</span><a href="#local-6989586621681017829"><span class="hs-identifier hs-var">lbls</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1109"></span><span>
</span><span id="line-1110"></span><span class="annot"><a href="GHC.CmmToC.html#te_temp"><span class="hs-identifier hs-type">te_temp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1111"></span><span id="te_temp"><span class="annot"><span class="annottext">te_temp :: LocalReg -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_temp"><span class="hs-identifier hs-var hs-var">te_temp</span></a></span></span><span> </span><span id="local-6989586621681017826"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017826"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((UniqSet LocalReg, Map CLabel ())
 -&gt; ((), (UniqSet LocalReg, Map CLabel ())))
-&gt; TE ()
forall a.
((UniqSet LocalReg, Map CLabel ())
 -&gt; (a, (UniqSet LocalReg, Map CLabel ())))
-&gt; TE a
</span><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-var">TE</span></a></span><span> </span><span class="annot"><span class="annottext">(((UniqSet LocalReg, Map CLabel ())
  -&gt; ((), (UniqSet LocalReg, Map CLabel ())))
 -&gt; TE ())
-&gt; ((UniqSet LocalReg, Map CLabel ())
    -&gt; ((), (UniqSet LocalReg, Map CLabel ())))
-&gt; TE ()
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span class="hs-special">(</span><span id="local-6989586621681017825"><span class="annot"><span class="annottext">UniqSet LocalReg
</span><a href="#local-6989586621681017825"><span class="hs-identifier hs-var">temps</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621681017824"><span class="annot"><span class="annottext">Map CLabel ()
</span><a href="#local-6989586621681017824"><span class="hs-identifier hs-var">lbls</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UniqSet LocalReg -&gt; LocalReg -&gt; UniqSet LocalReg
forall a. Uniquable a =&gt; UniqSet a -&gt; a -&gt; UniqSet a
</span><a href="GHC.Types.Unique.Set.html#addOneToUniqSet"><span class="hs-identifier hs-var">addOneToUniqSet</span></a></span><span> </span><span class="annot"><span class="annottext">UniqSet LocalReg
</span><a href="#local-6989586621681017825"><span class="hs-identifier hs-var">temps</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017826"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Map CLabel ()
</span><a href="#local-6989586621681017824"><span class="hs-identifier hs-var">lbls</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1112"></span><span>
</span><span id="line-1113"></span><span class="annot"><a href="GHC.CmmToC.html#runTE"><span class="hs-identifier hs-type">runTE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TEState"><span class="hs-identifier hs-type">TEState</span></a></span><span>
</span><span id="line-1114"></span><span id="runTE"><span class="annot"><span class="annottext">runTE :: TE () -&gt; (UniqSet LocalReg, Map CLabel ())
</span><a href="GHC.CmmToC.html#runTE"><span class="hs-identifier hs-var hs-var">runTE</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span id="local-6989586621681017822"><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
-&gt; ((), (UniqSet LocalReg, Map CLabel ()))
</span><a href="#local-6989586621681017822"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((), (UniqSet LocalReg, Map CLabel ()))
-&gt; (UniqSet LocalReg, Map CLabel ())
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(UniqSet LocalReg, Map CLabel ())
-&gt; ((), (UniqSet LocalReg, Map CLabel ()))
</span><a href="#local-6989586621681017822"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UniqSet LocalReg
forall a. UniqSet a
</span><a href="GHC.Types.Unique.Set.html#emptyUniqSet"><span class="hs-identifier hs-var">emptyUniqSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Map CLabel ()
forall k a. Map k a
</span><a href="../../containers/src/Data.Map.Internal.html#empty"><span class="hs-identifier hs-var">Map.empty</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1115"></span><span>
</span><span id="line-1116"></span><span class="annot"><a href="GHC.CmmToC.html#te_Static"><span class="hs-identifier hs-type">te_Static</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmStatic"><span class="hs-identifier hs-type">CmmStatic</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1117"></span><span id="te_Static"><span class="annot"><span class="annottext">te_Static :: CmmStatic -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Static"><span class="hs-identifier hs-var hs-var">te_Static</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-type">CmmStaticLit</span></a></span><span> </span><span id="local-6989586621681017819"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681017819"><span class="hs-identifier hs-var">lit</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Lit"><span class="hs-identifier hs-var">te_Lit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681017819"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-1118"></span><span class="annot"><a href="GHC.CmmToC.html#te_Static"><span class="hs-identifier hs-var">te_Static</span></a></span><span> </span><span class="annot"><span class="annottext">CmmStatic
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">() -&gt; TE ()
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1119"></span><span>
</span><span id="line-1120"></span><span class="annot"><a href="GHC.CmmToC.html#te_BB"><span class="hs-identifier hs-type">te_BB</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1121"></span><span id="te_BB"><span class="annot"><span class="annottext">te_BB :: CmmBlock -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_BB"><span class="hs-identifier hs-var hs-var">te_BB</span></a></span></span><span> </span><span id="local-6989586621681017817"><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681017817"><span class="hs-identifier hs-var">block</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmNode O O -&gt; TE ()) -&gt; [CmmNode O O] -&gt; TE ()
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Foldable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m ()
</span><a href="../../base/src/Data.Foldable.html#mapM_"><span class="hs-identifier hs-var">mapM_</span></a></span><span> </span><span class="annot"><span class="annottext">CmmNode O O -&gt; TE ()
forall (e :: Extensibility) (x :: Extensibility).
CmmNode e x -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var">te_Stmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Block CmmNode O O -&gt; [CmmNode O O]
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
Block n O O -&gt; [n O O]
</span><a href="GHC.Cmm.Dataflow.Block.html#blockToList"><span class="hs-identifier hs-var">blockToList</span></a></span><span> </span><span class="annot"><span class="annottext">Block CmmNode O O
</span><a href="#local-6989586621681017815"><span class="hs-identifier hs-var">mid</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TE () -&gt; TE () -&gt; TE ()
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; m b -&gt; m b
</span><a href="../../base/src/GHC.Base.html#%3E%3E"><span class="hs-operator hs-var">&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmmNode O C -&gt; TE ()
forall (e :: Extensibility) (x :: Extensibility).
CmmNode e x -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var">te_Stmt</span></a></span><span> </span><span class="annot"><span class="annottext">CmmNode O C
</span><a href="#local-6989586621681017814"><span class="hs-identifier hs-var">last</span></a></span><span>
</span><span id="line-1122"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmNode C O
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681017815"><span class="annot"><span class="annottext">Block CmmNode O O
</span><a href="#local-6989586621681017815"><span class="hs-identifier hs-var">mid</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681017814"><span class="annot"><span class="annottext">CmmNode O C
</span><a href="#local-6989586621681017814"><span class="hs-identifier hs-var">last</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmBlock -&gt; (CmmNode C O, Block CmmNode O O, CmmNode O C)
forall (n :: Extensibility -&gt; Extensibility -&gt; *).
Block n C C -&gt; (n C O, Block n O O, n O C)
</span><a href="GHC.Cmm.Dataflow.Block.html#blockSplit"><span class="hs-identifier hs-var">blockSplit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmBlock
</span><a href="#local-6989586621681017817"><span class="hs-identifier hs-var">block</span></a></span><span>
</span><span id="line-1123"></span><span>
</span><span id="line-1124"></span><span class="annot"><a href="GHC.CmmToC.html#te_Lit"><span class="hs-identifier hs-type">te_Lit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1125"></span><span id="te_Lit"><span class="annot"><span class="annottext">te_Lit :: CmmLit -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Lit"><span class="hs-identifier hs-var hs-var">te_Lit</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-type">CmmLabel</span></a></span><span> </span><span id="local-6989586621681017813"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017813"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_lbl"><span class="hs-identifier hs-var">te_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017813"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-1126"></span><span class="annot"><a href="GHC.CmmToC.html#te_Lit"><span class="hs-identifier hs-var">te_Lit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-type">CmmLabelOff</span></a></span><span> </span><span id="local-6989586621681017812"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017812"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_lbl"><span class="hs-identifier hs-var">te_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017812"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-1127"></span><span class="annot"><a href="GHC.CmmToC.html#te_Lit"><span class="hs-identifier hs-var">te_Lit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-type">CmmLabelDiffOff</span></a></span><span> </span><span id="local-6989586621681017811"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017811"><span class="hs-identifier hs-var">l1</span></a></span></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_lbl"><span class="hs-identifier hs-var">te_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681017811"><span class="hs-identifier hs-var">l1</span></a></span><span>
</span><span id="line-1128"></span><span class="annot"><a href="GHC.CmmToC.html#te_Lit"><span class="hs-identifier hs-var">te_Lit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">() -&gt; TE ()
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1129"></span><span>
</span><span id="line-1130"></span><span id="local-6989586621681018862"><span id="local-6989586621681018863"><span class="annot"><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-type">te_Stmt</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018863"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018862"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span></span><span>
</span><span id="line-1131"></span><span id="te_Stmt"><span class="annot"><span class="annottext">te_Stmt :: forall (e :: Extensibility) (x :: Extensibility).
CmmNode e x -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var hs-var">te_Stmt</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmAssign"><span class="hs-identifier hs-type">CmmAssign</span></a></span><span> </span><span id="local-6989586621681017806"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017806"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span id="local-6989586621681017805"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017805"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Reg"><span class="hs-identifier hs-var">te_Reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017806"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">TE () -&gt; TE () -&gt; TE ()
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; m b -&gt; m b
</span><a href="../../base/src/GHC.Base.html#%3E%3E"><span class="hs-operator hs-var">&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017805"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-1132"></span><span class="annot"><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var">te_Stmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmStore"><span class="hs-identifier hs-type">CmmStore</span></a></span><span> </span><span id="local-6989586621681017799"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017799"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span id="local-6989586621681017798"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017798"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017799"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">TE () -&gt; TE () -&gt; TE ()
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; m b -&gt; m b
</span><a href="../../base/src/GHC.Base.html#%3E%3E"><span class="hs-operator hs-var">&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017798"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-1133"></span><span class="annot"><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var">te_Stmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmUnsafeForeignCall"><span class="hs-identifier hs-type">CmmUnsafeForeignCall</span></a></span><span> </span><span id="local-6989586621681017789"><span class="annot"><span class="annottext">ForeignTarget
</span><a href="#local-6989586621681017789"><span class="hs-identifier hs-var">target</span></a></span></span><span> </span><span id="local-6989586621681017788"><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681017788"><span class="hs-identifier hs-var">rs</span></a></span></span><span> </span><span id="local-6989586621681017787"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681017787"><span class="hs-identifier hs-var">es</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1134"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>  </span><span class="annot"><span class="annottext">ForeignTarget -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Target"><span class="hs-identifier hs-var">te_Target</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignTarget
</span><a href="#local-6989586621681017789"><span class="hs-identifier hs-var">target</span></a></span><span>
</span><span id="line-1135"></span><span>        </span><span class="annot"><span class="annottext">(LocalReg -&gt; TE ()) -&gt; [LocalReg] -&gt; TE ()
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Foldable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m ()
</span><a href="../../base/src/Data.Foldable.html#mapM_"><span class="hs-identifier hs-var">mapM_</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_temp"><span class="hs-identifier hs-var">te_temp</span></a></span><span> </span><span class="annot"><span class="annottext">[LocalReg]
</span><a href="#local-6989586621681017788"><span class="hs-identifier hs-var">rs</span></a></span><span>
</span><span id="line-1136"></span><span>        </span><span class="annot"><span class="annottext">(CmmExpr -&gt; TE ()) -&gt; [CmmExpr] -&gt; TE ()
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Foldable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m ()
</span><a href="../../base/src/Data.Foldable.html#mapM_"><span class="hs-identifier hs-var">mapM_</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681017787"><span class="hs-identifier hs-var">es</span></a></span><span>
</span><span id="line-1137"></span><span class="annot"><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var">te_Stmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmCondBranch"><span class="hs-identifier hs-type">CmmCondBranch</span></a></span><span> </span><span id="local-6989586621681017783"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017783"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017783"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-1138"></span><span class="annot"><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var">te_Stmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmSwitch"><span class="hs-identifier hs-type">CmmSwitch</span></a></span><span> </span><span id="local-6989586621681017780"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017780"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="annot"><span class="annottext">SwitchTargets
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017780"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-1139"></span><span class="annot"><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var">te_Stmt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#CmmCall"><span class="hs-identifier hs-type">CmmCall</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cml_target :: CmmNode O C -&gt; CmmExpr
</span><a href="GHC.Cmm.Node.html#cml_target"><span class="hs-identifier hs-var">cml_target</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621681017777"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017777"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017777"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-1140"></span><span class="annot"><a href="GHC.CmmToC.html#te_Stmt"><span class="hs-identifier hs-var">te_Stmt</span></a></span><span> </span><span class="annot"><span class="annottext">CmmNode e x
</span><span class="hs-identifier">_</span></span><span>                       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">() -&gt; TE ()
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1141"></span><span>
</span><span id="line-1142"></span><span class="annot"><a href="GHC.CmmToC.html#te_Target"><span class="hs-identifier hs-type">te_Target</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#ForeignTarget"><span class="hs-identifier hs-type">ForeignTarget</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1143"></span><span id="te_Target"><span class="annot"><span class="annottext">te_Target :: ForeignTarget -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Target"><span class="hs-identifier hs-var hs-var">te_Target</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#ForeignTarget"><span class="hs-identifier hs-type">ForeignTarget</span></a></span><span> </span><span id="local-6989586621681017776"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017776"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="annot"><span class="annottext">ForeignConvention
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017776"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-1144"></span><span class="annot"><a href="GHC.CmmToC.html#te_Target"><span class="hs-identifier hs-var">te_Target</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Node.html#PrimTarget"><span class="hs-identifier hs-type">PrimTarget</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">() -&gt; TE ()
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1145"></span><span>
</span><span id="line-1146"></span><span class="annot"><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-type">te_Expr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1147"></span><span id="te_Expr"><span class="annot"><span class="annottext">te_Expr :: CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var hs-var">te_Expr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span id="local-6989586621681017775"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681017775"><span class="hs-identifier hs-var">lit</span></a></span></span><span class="hs-special">)</span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Lit"><span class="hs-identifier hs-var">te_Lit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681017775"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-1148"></span><span class="annot"><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span id="local-6989586621681017774"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017774"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017774"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-1149"></span><span class="annot"><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621681017773"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017773"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Reg"><span class="hs-identifier hs-var">te_Reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017773"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-1150"></span><span class="annot"><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681017772"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681017772"><span class="hs-identifier hs-var">es</span></a></span></span><span class="hs-special">)</span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmExpr -&gt; TE ()) -&gt; [CmmExpr] -&gt; TE ()
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Foldable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m ()
</span><a href="../../base/src/Data.Foldable.html#mapM_"><span class="hs-identifier hs-var">mapM_</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621681017772"><span class="hs-identifier hs-var">es</span></a></span><span>
</span><span id="line-1151"></span><span class="annot"><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621681017771"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017771"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Reg"><span class="hs-identifier hs-var">te_Reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621681017771"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-1152"></span><span class="annot"><a href="GHC.CmmToC.html#te_Expr"><span class="hs-identifier hs-var">te_Expr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span class="annot"><span class="annottext">Area
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; TE ()
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;te_Expr: CmmStackSlot not supported!&quot;</span></span><span>
</span><span id="line-1153"></span><span>
</span><span id="line-1154"></span><span class="annot"><a href="GHC.CmmToC.html#te_Reg"><span class="hs-identifier hs-type">te_Reg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.CmmToC.html#TE"><span class="hs-identifier hs-type">TE</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1155"></span><span id="te_Reg"><span class="annot"><span class="annottext">te_Reg :: CmmReg -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_Reg"><span class="hs-identifier hs-var hs-var">te_Reg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span id="local-6989586621681017770"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017770"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LocalReg -&gt; TE ()
</span><a href="GHC.CmmToC.html#te_temp"><span class="hs-identifier hs-var">te_temp</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621681017770"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-1156"></span><span class="annot"><a href="GHC.CmmToC.html#te_Reg"><span class="hs-identifier hs-var">te_Reg</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><span class="hs-identifier">_</span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">() -&gt; TE ()
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-1157"></span><span>
</span><span id="line-1158"></span><span>
</span><span id="line-1159"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-1160"></span><span class="hs-comment">-- C types for MachReps</span><span>
</span><span id="line-1161"></span><span>
</span><span id="line-1162"></span><span class="annot"><a href="GHC.CmmToC.html#cCast"><span class="hs-identifier hs-type">cCast</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1163"></span><span id="cCast"><span class="annot"><span class="annottext">cCast :: DynFlags -&gt; SDoc -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#cCast"><span class="hs-identifier hs-var hs-var">cCast</span></a></span></span><span> </span><span id="local-6989586621681017769"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017769"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681017768"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017768"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621681017767"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017767"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017768"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-var">pprExpr1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017769"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017767"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-1164"></span><span>
</span><span id="line-1165"></span><span class="annot"><a href="GHC.CmmToC.html#cLoad"><span class="hs-identifier hs-type">cLoad</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1166"></span><span id="cLoad"><span class="annot"><span class="annottext">cLoad :: DynFlags -&gt; CmmExpr -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#cLoad"><span class="hs-identifier hs-var hs-var">cLoad</span></a></span></span><span> </span><span id="local-6989586621681017766"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017766"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681017765"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017765"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span id="local-6989586621681017764"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017764"><span class="hs-identifier hs-var">rep</span></a></span></span><span>
</span><span id="line-1167"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Arch -&gt; Bool
</span><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformArch"><span class="hs-identifier hs-var">platformArch</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017761"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1168"></span><span>      </span><span class="hs-keyword">then</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681017760"><span class="annot"><span class="annottext">decl :: SDoc
</span><a href="#local-6989586621681017760"><span class="hs-identifier hs-var hs-var">decl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepCType"><span class="hs-identifier hs-var">machRepCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017761"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017764"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;x&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-1169"></span><span>               </span><span id="local-6989586621681017759"><span class="annot"><span class="annottext">struct :: SDoc
</span><a href="#local-6989586621681017759"><span class="hs-identifier hs-var hs-var">struct</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;struct&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#braces"><span class="hs-identifier hs-var">braces</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017760"><span class="hs-identifier hs-var">decl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1170"></span><span>               </span><span id="local-6989586621681017758"><span class="annot"><span class="annottext">packed_attr :: SDoc
</span><a href="#local-6989586621681017758"><span class="hs-identifier hs-var hs-var">packed_attr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;__attribute__((packed))&quot;</span></span><span>
</span><span id="line-1171"></span><span>               </span><span id="local-6989586621681017757"><span class="annot"><span class="annottext">cast :: SDoc
</span><a href="#local-6989586621681017757"><span class="hs-identifier hs-var hs-var">cast</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017759"><span class="hs-identifier hs-var">struct</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017758"><span class="hs-identifier hs-var">packed_attr</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span class="hs-special">)</span><span>
</span><span id="line-1172"></span><span>           </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017757"><span class="hs-identifier hs-var">cast</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprExpr1"><span class="hs-identifier hs-var">pprExpr1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017766"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017765"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;-&gt;x&quot;</span></span><span>
</span><span id="line-1173"></span><span>      </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; SDoc -&gt; CmmExpr -&gt; SDoc
</span><a href="GHC.CmmToC.html#cCast"><span class="hs-identifier hs-var">cCast</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017766"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepPtrCType"><span class="hs-identifier hs-var">machRepPtrCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017761"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017764"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681017765"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1174"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span class="hs-comment">-- On these platforms, unaligned loads are known to cause problems</span><span>
</span><span id="line-1175"></span><span>          </span><span id="local-6989586621681017763"><span class="annot"><span class="annottext">bewareLoadStoreAlignment :: Arch -&gt; Bool
</span><a href="#local-6989586621681017763"><span class="hs-identifier hs-var hs-var">bewareLoadStoreAlignment</span></a></span></span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchAlpha"><span class="hs-identifier hs-var">ArchAlpha</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1176"></span><span>          </span><span class="annot"><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchMipseb"><span class="hs-identifier hs-var">ArchMipseb</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1177"></span><span>          </span><span class="annot"><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchMipsel"><span class="hs-identifier hs-var">ArchMipsel</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1178"></span><span>          </span><span class="annot"><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#ArchARM"><span class="hs-identifier hs-type">ArchARM</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1179"></span><span>          </span><span class="annot"><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchAArch64"><span class="hs-identifier hs-var">ArchAArch64</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1180"></span><span>          </span><span class="annot"><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchSPARC"><span class="hs-identifier hs-var">ArchSPARC</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1181"></span><span>          </span><span class="annot"><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchSPARC64"><span class="hs-identifier hs-var">ArchSPARC64</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1182"></span><span>          </span><span class="hs-comment">-- Pessimistically assume that they will also cause problems</span><span>
</span><span id="line-1183"></span><span>          </span><span class="hs-comment">-- on unknown arches</span><span>
</span><span id="line-1184"></span><span>          </span><span class="annot"><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchUnknown"><span class="hs-identifier hs-var">ArchUnknown</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1185"></span><span>          </span><span class="annot"><a href="#local-6989586621681017763"><span class="hs-identifier hs-var">bewareLoadStoreAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">Arch
</span><span class="hs-identifier">_</span></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1186"></span><span>          </span><span id="local-6989586621681017761"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681017761"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017766"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-1187"></span><span>
</span><span id="line-1188"></span><span class="annot"><a href="GHC.CmmToC.html#isCmmWordType"><span class="hs-identifier hs-type">isCmmWordType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-1189"></span><span class="hs-comment">-- True of GcPtrReg/NonGcReg of native word size</span><span>
</span><span id="line-1190"></span><span id="isCmmWordType"><span class="annot"><span class="annottext">isCmmWordType :: Platform -&gt; CmmType -&gt; Bool
</span><a href="GHC.CmmToC.html#isCmmWordType"><span class="hs-identifier hs-var hs-var">isCmmWordType</span></a></span></span><span> </span><span id="local-6989586621681017746"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017746"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017745"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017745"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#isFloatType"><span class="hs-identifier hs-var">isFloatType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017745"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1191"></span><span>                            </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017745"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017746"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-1192"></span><span>
</span><span id="line-1193"></span><span class="hs-comment">-- This is for finding the types of foreign call arguments.  For a pointer</span><span>
</span><span id="line-1194"></span><span class="hs-comment">-- argument, we always cast the argument to (void *), to avoid warnings from</span><span>
</span><span id="line-1195"></span><span class="hs-comment">-- the C compiler.</span><span>
</span><span id="line-1196"></span><span class="annot"><a href="GHC.CmmToC.html#machRepHintCType"><span class="hs-identifier hs-type">machRepHintCType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#ForeignHint"><span class="hs-identifier hs-type">ForeignHint</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1197"></span><span id="machRepHintCType"><span class="annot"><span class="annottext">machRepHintCType :: Platform -&gt; CmmType -&gt; ForeignHint -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepHintCType"><span class="hs-identifier hs-var hs-var">machRepHintCType</span></a></span></span><span> </span><span id="local-6989586621681017744"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017744"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017743"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017743"><span class="hs-identifier hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-1198"></span><span>   </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#AddrHint"><span class="hs-identifier hs-var">AddrHint</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;void *&quot;</span></span><span>
</span><span id="line-1199"></span><span>   </span><span class="annot"><span class="annottext">ForeignHint
</span><a href="GHC.Cmm.Type.html#SignedHint"><span class="hs-identifier hs-var">SignedHint</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_S_CType"><span class="hs-identifier hs-var">machRep_S_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017744"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017743"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1200"></span><span>   </span><span id="local-6989586621681017742"><span class="annot"><span class="annottext">ForeignHint
</span><a href="#local-6989586621681017742"><span class="hs-identifier hs-var">_other</span></a></span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepCType"><span class="hs-identifier hs-var">machRepCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017744"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017743"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-1201"></span><span>
</span><span id="line-1202"></span><span class="annot"><a href="GHC.CmmToC.html#machRepPtrCType"><span class="hs-identifier hs-type">machRepPtrCType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1203"></span><span id="machRepPtrCType"><span class="annot"><span class="annottext">machRepPtrCType :: Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepPtrCType"><span class="hs-identifier hs-var hs-var">machRepPtrCType</span></a></span></span><span> </span><span id="local-6989586621681017741"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017741"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017740"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017740"><span class="hs-identifier hs-var">r</span></a></span></span><span>
</span><span id="line-1204"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; Bool
</span><a href="GHC.CmmToC.html#isCmmWordType"><span class="hs-identifier hs-var">isCmmWordType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017741"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017740"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-1205"></span><span>      </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;P_&quot;</span></span><span>
</span><span id="line-1206"></span><span>      </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepCType"><span class="hs-identifier hs-var">machRepCType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017741"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017740"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span>
</span><span id="line-1207"></span><span>
</span><span id="line-1208"></span><span class="annot"><a href="GHC.CmmToC.html#machRepCType"><span class="hs-identifier hs-type">machRepCType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1209"></span><span id="machRepCType"><span class="annot"><span class="annottext">machRepCType :: Platform -&gt; CmmType -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRepCType"><span class="hs-identifier hs-var hs-var">machRepCType</span></a></span></span><span> </span><span id="local-6989586621681017739"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017739"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017738"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017738"><span class="hs-identifier hs-var">ty</span></a></span></span><span>
</span><span id="line-1210"></span><span>   </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#isFloatType"><span class="hs-identifier hs-var">isFloatType</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017738"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-var">machRep_F_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017737"><span class="hs-identifier hs-var">w</span></a></span><span>
</span><span id="line-1211"></span><span>   </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_U_CType"><span class="hs-identifier hs-var">machRep_U_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017739"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017737"><span class="hs-identifier hs-var">w</span></a></span><span>
</span><span id="line-1212"></span><span>   </span><span class="hs-keyword">where</span><span>
</span><span id="line-1213"></span><span>      </span><span id="local-6989586621681017737"><span class="annot"><span class="annottext">w :: Width
</span><a href="#local-6989586621681017737"><span class="hs-identifier hs-var hs-var">w</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681017738"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-1214"></span><span>
</span><span id="line-1215"></span><span class="annot"><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-type">machRep_F_CType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1216"></span><span id="machRep_F_CType"><span class="annot"><span class="annottext">machRep_F_CType :: Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-var hs-var">machRep_F_CType</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgFloat&quot;</span></span><span> </span><span class="hs-comment">-- ToDo: correct?</span><span>
</span><span id="line-1217"></span><span class="annot"><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-var">machRep_F_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgDouble&quot;</span></span><span>
</span><span id="line-1218"></span><span class="annot"><a href="GHC.CmmToC.html#machRep_F_CType"><span class="hs-identifier hs-var">machRep_F_CType</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;machRep_F_CType&quot;</span></span><span>
</span><span id="line-1219"></span><span>
</span><span id="line-1220"></span><span class="annot"><a href="GHC.CmmToC.html#machRep_U_CType"><span class="hs-identifier hs-type">machRep_U_CType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1221"></span><span id="machRep_U_CType"><span class="annot"><span class="annottext">machRep_U_CType :: Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_U_CType"><span class="hs-identifier hs-var hs-var">machRep_U_CType</span></a></span></span><span> </span><span id="local-6989586621681017736"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017736"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017735"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017735"><span class="hs-identifier hs-var">w</span></a></span></span><span>
</span><span id="line-1222"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017735"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-1223"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017735"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017736"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;W_&quot;</span></span><span>
</span><span id="line-1224"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W8"><span class="hs-identifier hs-var">W8</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgWord8&quot;</span></span><span>
</span><span id="line-1225"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W16"><span class="hs-identifier hs-var">W16</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgWord16&quot;</span></span><span>
</span><span id="line-1226"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgWord32&quot;</span></span><span>
</span><span id="line-1227"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgWord64&quot;</span></span><span>
</span><span id="line-1228"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;machRep_U_CType&quot;</span></span><span>
</span><span id="line-1229"></span><span>
</span><span id="line-1230"></span><span class="annot"><a href="GHC.CmmToC.html#machRep_S_CType"><span class="hs-identifier hs-type">machRep_S_CType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1231"></span><span id="machRep_S_CType"><span class="annot"><span class="annottext">machRep_S_CType :: Platform -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#machRep_S_CType"><span class="hs-identifier hs-var hs-var">machRep_S_CType</span></a></span></span><span> </span><span id="local-6989586621681017733"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017733"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017732"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017732"><span class="hs-identifier hs-var">w</span></a></span></span><span>
</span><span id="line-1232"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017732"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-1233"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017732"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017733"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;I_&quot;</span></span><span>
</span><span id="line-1234"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W8"><span class="hs-identifier hs-var">W8</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgInt8&quot;</span></span><span>
</span><span id="line-1235"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W16"><span class="hs-identifier hs-var">W16</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgInt16&quot;</span></span><span>
</span><span id="line-1236"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgInt32&quot;</span></span><span>
</span><span id="line-1237"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgInt64&quot;</span></span><span>
</span><span id="line-1238"></span><span>   </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;machRep_S_CType&quot;</span></span><span>
</span><span id="line-1239"></span><span>
</span><span id="line-1240"></span><span>
</span><span id="line-1241"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-1242"></span><span class="hs-comment">-- print strings as valid C strings</span><span>
</span><span id="line-1243"></span><span>
</span><span id="line-1244"></span><span class="annot"><a href="GHC.CmmToC.html#pprStringInCStyle"><span class="hs-identifier hs-type">pprStringInCStyle</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier hs-type">ByteString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1245"></span><span id="pprStringInCStyle"><span class="annot"><span class="annottext">pprStringInCStyle :: ByteString -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprStringInCStyle"><span class="hs-identifier hs-var hs-var">pprStringInCStyle</span></a></span></span><span> </span><span id="local-6989586621681017731"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681017731"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#doubleQuotes"><span class="hs-identifier hs-var">doubleQuotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Word8 -&gt; String) -&gt; [Word8] -&gt; String
forall (t :: * -&gt; *) a b. Foldable t =&gt; (a -&gt; [b]) -&gt; t a -&gt; [b]
</span><a href="../../base/src/Data.Foldable.html#concatMap"><span class="hs-identifier hs-var">concatMap</span></a></span><span> </span><span class="annot"><span class="annottext">Word8 -&gt; String
</span><a href="GHC.Utils.Misc.html#charToC"><span class="hs-identifier hs-var">charToC</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -&gt; [Word8]
</span><a href="../../bytestring/src/Data.ByteString.html#unpack"><span class="hs-identifier hs-var">BS.unpack</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621681017731"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1246"></span><span>
</span><span id="line-1247"></span><span class="hs-comment">-- ---------------------------------------------------------------------------</span><span>
</span><span id="line-1248"></span><span class="hs-comment">-- Initialising static objects with floating-point numbers.  We can't</span><span>
</span><span id="line-1249"></span><span class="hs-comment">-- just emit the floating point number, because C will cast it to an int</span><span>
</span><span id="line-1250"></span><span class="hs-comment">-- by rounding it.  We want the actual bit-representation of the float.</span><span>
</span><span id="line-1251"></span><span class="hs-comment">--</span><span>
</span><span id="line-1252"></span><span class="hs-comment">-- Consider a concrete C example:</span><span>
</span><span id="line-1253"></span><span class="hs-comment">--    double d = 2.5e-10;</span><span>
</span><span id="line-1254"></span><span class="hs-comment">--    float f  = 2.5e-10f;</span><span>
</span><span id="line-1255"></span><span class="hs-comment">--</span><span>
</span><span id="line-1256"></span><span class="hs-comment">--    int * i2 = &amp;d;      printf (&quot;i2: %08X %08X\n&quot;, i2[0], i2[1]);</span><span>
</span><span id="line-1257"></span><span class="hs-comment">--    long long * l = &amp;d; printf (&quot; l: %016llX\n&quot;,   l[0]);</span><span>
</span><span id="line-1258"></span><span class="hs-comment">--    int * i = &amp;f;       printf (&quot; i: %08X\n&quot;,      i[0]);</span><span>
</span><span id="line-1259"></span><span class="hs-comment">-- Result on 64-bit LE (x86_64):</span><span>
</span><span id="line-1260"></span><span class="hs-comment">--     i2: E826D695 3DF12E0B</span><span>
</span><span id="line-1261"></span><span class="hs-comment">--      l: 3DF12E0BE826D695</span><span>
</span><span id="line-1262"></span><span class="hs-comment">--      i: 2F89705F</span><span>
</span><span id="line-1263"></span><span class="hs-comment">-- Result on 32-bit BE (m68k):</span><span>
</span><span id="line-1264"></span><span class="hs-comment">--     i2: 3DF12E0B E826D695</span><span>
</span><span id="line-1265"></span><span class="hs-comment">--      l: 3DF12E0BE826D695</span><span>
</span><span id="line-1266"></span><span class="hs-comment">--      i: 2F89705F</span><span>
</span><span id="line-1267"></span><span class="hs-comment">--</span><span>
</span><span id="line-1268"></span><span class="hs-comment">-- The trick here is to notice that binary representation does not</span><span>
</span><span id="line-1269"></span><span class="hs-comment">-- change much: only Word32 values get swapped on LE hosts / targets.</span><span>
</span><span id="line-1270"></span><span>
</span><span id="line-1271"></span><span class="hs-comment">-- This is a hack to turn the floating point numbers into ints that we</span><span>
</span><span id="line-1272"></span><span class="hs-comment">-- can safely initialise to static locations.</span><span>
</span><span id="line-1273"></span><span>
</span><span id="line-1274"></span><span id="local-6989586621681018855"><span class="annot"><a href="GHC.CmmToC.html#castFloatToWord32Array"><span class="hs-identifier hs-type">castFloatToWord32Array</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../array/src/Data.Array.Base.html#STUArray"><span class="hs-identifier hs-type">STUArray</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018855"><span class="hs-identifier hs-type">s</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Float</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.ST.html#ST"><span class="hs-identifier hs-type">ST</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018855"><span class="hs-identifier hs-type">s</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../array/src/Data.Array.Base.html#STUArray"><span class="hs-identifier hs-type">STUArray</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018855"><span class="hs-identifier hs-type">s</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word32"><span class="hs-identifier hs-type">Word32</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-1275"></span><span id="castFloatToWord32Array"><span class="annot"><span class="annottext">castFloatToWord32Array :: forall s. STUArray s Int Float -&gt; ST s (STUArray s Int Word32)
</span><a href="GHC.CmmToC.html#castFloatToWord32Array"><span class="hs-identifier hs-var hs-var">castFloatToWord32Array</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Float -&gt; ST s (STUArray s Int Word32)
forall s ix a b. STUArray s ix a -&gt; ST s (STUArray s ix b)
</span><a href="../../array/src/Data.Array.Base.html#castSTUArray"><span class="hs-identifier hs-var">U.castSTUArray</span></a></span><span>
</span><span id="line-1276"></span><span>
</span><span id="line-1277"></span><span id="local-6989586621681018847"><span class="annot"><a href="GHC.CmmToC.html#castDoubleToWord64Array"><span class="hs-identifier hs-type">castDoubleToWord64Array</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../array/src/Data.Array.Base.html#STUArray"><span class="hs-identifier hs-type">STUArray</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018847"><span class="hs-identifier hs-type">s</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Double</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.ST.html#ST"><span class="hs-identifier hs-type">ST</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018847"><span class="hs-identifier hs-type">s</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../array/src/Data.Array.Base.html#STUArray"><span class="hs-identifier hs-type">STUArray</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681018847"><span class="hs-identifier hs-type">s</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><a href="../../base/src/GHC.Word.html#Word64"><span class="hs-identifier hs-type">Word64</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-1278"></span><span id="castDoubleToWord64Array"><span class="annot"><span class="annottext">castDoubleToWord64Array :: forall s. STUArray s Int Double -&gt; ST s (STUArray s Int Word64)
</span><a href="GHC.CmmToC.html#castDoubleToWord64Array"><span class="hs-identifier hs-var hs-var">castDoubleToWord64Array</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Double -&gt; ST s (STUArray s Int Word64)
forall s ix a b. STUArray s ix a -&gt; ST s (STUArray s ix b)
</span><a href="../../array/src/Data.Array.Base.html#castSTUArray"><span class="hs-identifier hs-var">U.castSTUArray</span></a></span><span>
</span><span id="line-1279"></span><span>
</span><span id="line-1280"></span><span class="annot"><a href="GHC.CmmToC.html#floatToWord"><span class="hs-identifier hs-type">floatToWord</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Real.html#Rational"><span class="hs-identifier hs-type">Rational</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-1281"></span><span id="floatToWord"><span class="annot"><span class="annottext">floatToWord :: Platform -&gt; Rational -&gt; CmmLit
</span><a href="GHC.CmmToC.html#floatToWord"><span class="hs-identifier hs-var hs-var">floatToWord</span></a></span></span><span> </span><span id="local-6989586621681017724"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017724"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017723"><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681017723"><span class="hs-identifier hs-var">r</span></a></span></span><span>
</span><span id="line-1282"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(forall s. ST s CmmLit) -&gt; CmmLit
forall a. (forall s. ST s a) -&gt; a
</span><a href="../../base/src/GHC.ST.html#runST"><span class="hs-identifier hs-var">runST</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-keyword">do</span><span>
</span><span id="line-1283"></span><span>        </span><span id="local-6989586621681017699"><span class="annot"><span class="annottext">STUArray s Int Float
</span><a href="#local-6989586621681017699"><span class="hs-identifier hs-var">arr</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Int, Int) -&gt; ST s (STUArray s Int Float)
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
(i, i) -&gt; m (a i e)
</span><a href="../../array/src/Data.Array.Base.html#newArray_"><span class="hs-identifier hs-var">newArray_</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">::</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span class="hs-special">)</span><span class="hs-special">,</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-special">)</span><span>
</span><span id="line-1284"></span><span>        </span><span class="annot"><span class="annottext">STUArray s Int Float -&gt; Int -&gt; Float -&gt; ST s ()
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
a i e -&gt; i -&gt; e -&gt; m ()
</span><a href="../../array/src/Data.Array.Base.html#writeArray"><span class="hs-identifier hs-var">writeArray</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Float
</span><a href="#local-6989586621681017699"><span class="hs-identifier hs-var">arr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Rational -&gt; Float
forall a. Fractional a =&gt; Rational -&gt; a
</span><a href="../../base/src/GHC.Real.html#fromRational"><span class="hs-identifier hs-var">fromRational</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681017723"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1285"></span><span>        </span><span id="local-6989586621681017696"><span class="annot"><span class="annottext">STUArray s Int Word32
</span><a href="#local-6989586621681017696"><span class="hs-identifier hs-var">arr'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Float -&gt; ST s (STUArray s Int Word32)
forall s. STUArray s Int Float -&gt; ST s (STUArray s Int Word32)
</span><a href="GHC.CmmToC.html#castFloatToWord32Array"><span class="hs-identifier hs-var">castFloatToWord32Array</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Float
</span><a href="#local-6989586621681017699"><span class="hs-identifier hs-var">arr</span></a></span><span>
</span><span id="line-1286"></span><span>        </span><span id="local-6989586621681017695"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017695"><span class="hs-identifier hs-var">w32</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Word32 -&gt; Int -&gt; ST s Word32
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
a i e -&gt; i -&gt; m e
</span><a href="../../array/src/Data.Array.Base.html#readArray"><span class="hs-identifier hs-var">readArray</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Word32
</span><a href="#local-6989586621681017696"><span class="hs-identifier hs-var">arr'</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-1287"></span><span>        </span><span class="annot"><span class="annottext">CmmLit -&gt; ST s CmmLit
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word32 -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017695"><span class="hs-identifier hs-var">w32</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-operator hs-var">`shiftL`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681017693"><span class="hs-identifier hs-var">wo</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017724"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1288"></span><span>    </span><span class="hs-special">)</span><span>
</span><span id="line-1289"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681017693"><span class="annot"><span class="annottext">wo :: Int
</span><a href="#local-6989586621681017693"><span class="hs-identifier hs-var hs-var">wo</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017724"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span>
</span><span id="line-1290"></span><span>             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#BigEndian"><span class="hs-identifier hs-var">BigEndian</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ByteOrder
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformByteOrder"><span class="hs-identifier hs-var hs-var">platformByteOrder</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017724"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-1291"></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span>
</span><span id="line-1292"></span><span>             </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-1293"></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-1294"></span><span>
</span><span id="line-1295"></span><span class="annot"><a href="GHC.CmmToC.html#floatPairToWord"><span class="hs-identifier hs-type">floatPairToWord</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Real.html#Rational"><span class="hs-identifier hs-type">Rational</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Real.html#Rational"><span class="hs-identifier hs-type">Rational</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-1296"></span><span id="floatPairToWord"><span class="annot"><span class="annottext">floatPairToWord :: Platform -&gt; Rational -&gt; Rational -&gt; CmmLit
</span><a href="GHC.CmmToC.html#floatPairToWord"><span class="hs-identifier hs-var hs-var">floatPairToWord</span></a></span></span><span> </span><span id="local-6989586621681017692"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017692"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017691"><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681017691"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621681017690"><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681017690"><span class="hs-identifier hs-var">r2</span></a></span></span><span>
</span><span id="line-1297"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(forall s. ST s CmmLit) -&gt; CmmLit
forall a. (forall s. ST s a) -&gt; a
</span><a href="../../base/src/GHC.ST.html#runST"><span class="hs-identifier hs-var">runST</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-keyword">do</span><span>
</span><span id="line-1298"></span><span>        </span><span id="local-6989586621681017665"><span class="annot"><span class="annottext">STUArray s Int Float
</span><a href="#local-6989586621681017665"><span class="hs-identifier hs-var">arr</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Int, Int) -&gt; ST s (STUArray s Int Float)
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
(i, i) -&gt; m (a i e)
</span><a href="../../array/src/Data.Array.Base.html#newArray_"><span class="hs-identifier hs-var">newArray_</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">::</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span class="hs-special">)</span><span class="hs-special">,</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-1299"></span><span>        </span><span class="annot"><span class="annottext">STUArray s Int Float -&gt; Int -&gt; Float -&gt; ST s ()
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
a i e -&gt; i -&gt; e -&gt; m ()
</span><a href="../../array/src/Data.Array.Base.html#writeArray"><span class="hs-identifier hs-var">writeArray</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Float
</span><a href="#local-6989586621681017665"><span class="hs-identifier hs-var">arr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Rational -&gt; Float
forall a. Fractional a =&gt; Rational -&gt; a
</span><a href="../../base/src/GHC.Real.html#fromRational"><span class="hs-identifier hs-var">fromRational</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681017691"><span class="hs-identifier hs-var">r1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1300"></span><span>        </span><span class="annot"><span class="annottext">STUArray s Int Float -&gt; Int -&gt; Float -&gt; ST s ()
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
a i e -&gt; i -&gt; e -&gt; m ()
</span><a href="../../array/src/Data.Array.Base.html#writeArray"><span class="hs-identifier hs-var">writeArray</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Float
</span><a href="#local-6989586621681017665"><span class="hs-identifier hs-var">arr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Rational -&gt; Float
forall a. Fractional a =&gt; Rational -&gt; a
</span><a href="../../base/src/GHC.Real.html#fromRational"><span class="hs-identifier hs-var">fromRational</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681017690"><span class="hs-identifier hs-var">r2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1301"></span><span>        </span><span id="local-6989586621681017664"><span class="annot"><span class="annottext">STUArray s Int Word32
</span><a href="#local-6989586621681017664"><span class="hs-identifier hs-var">arr'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Float -&gt; ST s (STUArray s Int Word32)
forall s. STUArray s Int Float -&gt; ST s (STUArray s Int Word32)
</span><a href="GHC.CmmToC.html#castFloatToWord32Array"><span class="hs-identifier hs-var">castFloatToWord32Array</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Float
</span><a href="#local-6989586621681017665"><span class="hs-identifier hs-var">arr</span></a></span><span>
</span><span id="line-1302"></span><span>        </span><span id="local-6989586621681017663"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017663"><span class="hs-identifier hs-var">w32_1</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Word32 -&gt; Int -&gt; ST s Word32
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
a i e -&gt; i -&gt; m e
</span><a href="../../array/src/Data.Array.Base.html#readArray"><span class="hs-identifier hs-var">readArray</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Word32
</span><a href="#local-6989586621681017664"><span class="hs-identifier hs-var">arr'</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-1303"></span><span>        </span><span id="local-6989586621681017662"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017662"><span class="hs-identifier hs-var">w32_2</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Word32 -&gt; Int -&gt; ST s Word32
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
a i e -&gt; i -&gt; m e
</span><a href="../../array/src/Data.Array.Base.html#readArray"><span class="hs-identifier hs-var">readArray</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Word32
</span><a href="#local-6989586621681017664"><span class="hs-identifier hs-var">arr'</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span>
</span><span id="line-1304"></span><span>        </span><span class="annot"><span class="annottext">CmmLit -&gt; ST s CmmLit
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word32 -&gt; Word32 -&gt; CmmLit
</span><a href="#local-6989586621681017661"><span class="hs-identifier hs-var">pprWord32Pair</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017663"><span class="hs-identifier hs-var">w32_1</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017662"><span class="hs-identifier hs-var">w32_2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1305"></span><span>    </span><span class="hs-special">)</span><span>
</span><span id="line-1306"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681017661"><span class="annot"><span class="annottext">pprWord32Pair :: Word32 -&gt; Word32 -&gt; CmmLit
</span><a href="#local-6989586621681017661"><span class="hs-identifier hs-var hs-var">pprWord32Pair</span></a></span></span><span> </span><span id="local-6989586621681017660"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017660"><span class="hs-identifier hs-var">w32_1</span></a></span></span><span> </span><span id="local-6989586621681017659"><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017659"><span class="hs-identifier hs-var">w32_2</span></a></span></span><span>
</span><span id="line-1307"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#BigEndian"><span class="hs-identifier hs-var">BigEndian</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ByteOrder
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformByteOrder"><span class="hs-identifier hs-var hs-var">platformByteOrder</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017692"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1308"></span><span>                  </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-identifier hs-var">shiftL</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017658"><span class="hs-identifier hs-var">i1</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017657"><span class="hs-identifier hs-var">i2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span>
</span><span id="line-1309"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1310"></span><span>                  </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-identifier hs-var">shiftL</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017657"><span class="hs-identifier hs-var">i2</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017658"><span class="hs-identifier hs-var">i1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span>
</span><span id="line-1311"></span><span>              </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681017658"><span class="annot"><span class="annottext">i1 :: Integer
</span><a href="#local-6989586621681017658"><span class="hs-identifier hs-var hs-var">i1</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Word32 -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017660"><span class="hs-identifier hs-var">w32_1</span></a></span><span>
</span><span id="line-1312"></span><span>                    </span><span id="local-6989586621681017657"><span class="annot"><span class="annottext">i2 :: Integer
</span><a href="#local-6989586621681017657"><span class="hs-identifier hs-var hs-var">i2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Word32 -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Word32
</span><a href="#local-6989586621681017659"><span class="hs-identifier hs-var">w32_2</span></a></span><span>
</span><span id="line-1313"></span><span>
</span><span id="line-1314"></span><span class="annot"><a href="GHC.CmmToC.html#doubleToWords"><span class="hs-identifier hs-type">doubleToWords</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Real.html#Rational"><span class="hs-identifier hs-type">Rational</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1315"></span><span id="doubleToWords"><span class="annot"><span class="annottext">doubleToWords :: Platform -&gt; Rational -&gt; [CmmLit]
</span><a href="GHC.CmmToC.html#doubleToWords"><span class="hs-identifier hs-var hs-var">doubleToWords</span></a></span></span><span> </span><span id="local-6989586621681017656"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017656"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681017655"><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681017655"><span class="hs-identifier hs-var">r</span></a></span></span><span>
</span><span id="line-1316"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(forall s. ST s [CmmLit]) -&gt; [CmmLit]
forall a. (forall s. ST s a) -&gt; a
</span><a href="../../base/src/GHC.ST.html#runST"><span class="hs-identifier hs-var">runST</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-keyword">do</span><span>
</span><span id="line-1317"></span><span>        </span><span id="local-6989586621681017637"><span class="annot"><span class="annottext">STUArray s Int Double
</span><a href="#local-6989586621681017637"><span class="hs-identifier hs-var">arr</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(Int, Int) -&gt; ST s (STUArray s Int Double)
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
(i, i) -&gt; m (a i e)
</span><a href="../../array/src/Data.Array.Base.html#newArray_"><span class="hs-identifier hs-var">newArray_</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">::</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span class="hs-special">)</span><span class="hs-special">,</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-1318"></span><span>        </span><span class="annot"><span class="annottext">STUArray s Int Double -&gt; Int -&gt; Double -&gt; ST s ()
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
a i e -&gt; i -&gt; e -&gt; m ()
</span><a href="../../array/src/Data.Array.Base.html#writeArray"><span class="hs-identifier hs-var">writeArray</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Double
</span><a href="#local-6989586621681017637"><span class="hs-identifier hs-var">arr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Rational -&gt; Double
forall a. Fractional a =&gt; Rational -&gt; a
</span><a href="../../base/src/GHC.Real.html#fromRational"><span class="hs-identifier hs-var">fromRational</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><a href="#local-6989586621681017655"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1319"></span><span>        </span><span id="local-6989586621681017636"><span class="annot"><span class="annottext">STUArray s Int Word64
</span><a href="#local-6989586621681017636"><span class="hs-identifier hs-var">arr'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Double -&gt; ST s (STUArray s Int Word64)
forall s. STUArray s Int Double -&gt; ST s (STUArray s Int Word64)
</span><a href="GHC.CmmToC.html#castDoubleToWord64Array"><span class="hs-identifier hs-var">castDoubleToWord64Array</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Double
</span><a href="#local-6989586621681017637"><span class="hs-identifier hs-var">arr</span></a></span><span>
</span><span id="line-1320"></span><span>        </span><span id="local-6989586621681017635"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017635"><span class="hs-identifier hs-var">w64</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">STUArray s Int Word64 -&gt; Int -&gt; ST s Word64
forall (a :: * -&gt; * -&gt; *) e (m :: * -&gt; *) i.
(MArray a e m, Ix i) =&gt;
a i e -&gt; i -&gt; m e
</span><a href="../../array/src/Data.Array.Base.html#readArray"><span class="hs-identifier hs-var">readArray</span></a></span><span> </span><span class="annot"><span class="annottext">STUArray s Int Word64
</span><a href="#local-6989586621681017636"><span class="hs-identifier hs-var">arr'</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-1321"></span><span>        </span><span class="annot"><span class="annottext">[CmmLit] -&gt; ST s [CmmLit]
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; [CmmLit]
</span><a href="#local-6989586621681017634"><span class="hs-identifier hs-var">pprWord64</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017635"><span class="hs-identifier hs-var">w64</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1322"></span><span>    </span><span class="hs-special">)</span><span>
</span><span id="line-1323"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681017633"><span class="annot"><span class="annottext">targetWidth :: Width
</span><a href="#local-6989586621681017633"><span class="hs-identifier hs-var hs-var">targetWidth</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017656"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-1324"></span><span>          </span><span id="local-6989586621681017634"><span class="annot"><span class="annottext">pprWord64 :: Word64 -&gt; [CmmLit]
</span><a href="#local-6989586621681017634"><span class="hs-identifier hs-var hs-var">pprWord64</span></a></span></span><span> </span><span id="local-6989586621681017632"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017632"><span class="hs-identifier hs-var">w64</span></a></span></span><span>
</span><span id="line-1325"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017633"><span class="hs-identifier hs-var">targetWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1326"></span><span>                  </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017632"><span class="hs-identifier hs-var">w64</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017633"><span class="hs-identifier hs-var">targetWidth</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-1327"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017633"><span class="hs-identifier hs-var">targetWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1328"></span><span>                  </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017631"><span class="hs-identifier hs-var">targetW1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017633"><span class="hs-identifier hs-var">targetWidth</span></a></span><span>
</span><span id="line-1329"></span><span>                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017630"><span class="hs-identifier hs-var">targetW2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017633"><span class="hs-identifier hs-var">targetWidth</span></a></span><span>
</span><span id="line-1330"></span><span>                  </span><span class="hs-special">]</span><span>
</span><span id="line-1331"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; [CmmLit]
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;doubleToWords.pprWord64&quot;</span></span><span>
</span><span id="line-1332"></span><span>              </span><span class="hs-keyword">where</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681017631"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017631"><span class="hs-identifier hs-var">targetW1</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681017630"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017630"><span class="hs-identifier hs-var">targetW2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ByteOrder
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformByteOrder"><span class="hs-identifier hs-var hs-var">platformByteOrder</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017656"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-1333"></span><span>                        </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#BigEndian"><span class="hs-identifier hs-var">BigEndian</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017629"><span class="hs-identifier hs-var">wHi</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017628"><span class="hs-identifier hs-var">wLo</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1334"></span><span>                        </span><span class="annot"><span class="annottext">ByteOrder
</span><a href="../../base/src/GHC.ByteOrder.html#LittleEndian"><span class="hs-identifier hs-var">LittleEndian</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017628"><span class="hs-identifier hs-var">wLo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017629"><span class="hs-identifier hs-var">wHi</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1335"></span><span>                    </span><span id="local-6989586621681017629"><span class="annot"><span class="annottext">wHi :: Word64
</span><a href="#local-6989586621681017629"><span class="hs-identifier hs-var hs-var">wHi</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017632"><span class="hs-identifier hs-var">w64</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Int -&gt; Word64
forall a. Bits a =&gt; a -&gt; Int -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftR"><span class="hs-operator hs-var">`shiftR`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span>
</span><span id="line-1336"></span><span>                    </span><span id="local-6989586621681017628"><span class="annot"><span class="annottext">wLo :: Word64
</span><a href="#local-6989586621681017628"><span class="hs-identifier hs-var hs-var">wLo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681017632"><span class="hs-identifier hs-var">w64</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Word64 -&gt; Word64
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%26."><span class="hs-operator hs-var">.&amp;.</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><span class="hs-number">0xFFFFffff</span></span><span>
</span><span id="line-1337"></span><span>
</span><span id="line-1338"></span><span class="hs-comment">-- ---------------------------------------------------------------------------</span><span>
</span><span id="line-1339"></span><span class="hs-comment">-- Utils</span><span>
</span><span id="line-1340"></span><span>
</span><span id="line-1341"></span><span class="annot"><a href="GHC.CmmToC.html#wordShift"><span class="hs-identifier hs-type">wordShift</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-1342"></span><span id="wordShift"><span class="annot"><span class="annottext">wordShift :: Platform -&gt; Int
</span><a href="GHC.CmmToC.html#wordShift"><span class="hs-identifier hs-var hs-var">wordShift</span></a></span></span><span> </span><span id="local-6989586621681017627"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017627"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Width -&gt; Int
</span><a href="GHC.Cmm.Type.html#widthInLog"><span class="hs-identifier hs-var">widthInLog</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681017627"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1343"></span><span>
</span><span id="line-1344"></span><span class="annot"><a href="GHC.CmmToC.html#commafy"><span class="hs-identifier hs-type">commafy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1345"></span><span id="commafy"><span class="annot"><span class="annottext">commafy :: [SDoc] -&gt; SDoc
</span><a href="GHC.CmmToC.html#commafy"><span class="hs-identifier hs-var hs-var">commafy</span></a></span></span><span> </span><span id="local-6989586621681017625"><span class="annot"><span class="annottext">[SDoc]
</span><a href="#local-6989586621681017625"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc]
</span><a href="#local-6989586621681017625"><span class="hs-identifier hs-var">xs</span></a></span><span>
</span><span id="line-1346"></span><span>
</span><span id="line-1347"></span><span class="hs-comment">-- Print in C hex format: 0x13fa</span><span>
</span><span id="line-1348"></span><span class="annot"><a href="GHC.CmmToC.html#pprHexVal"><span class="hs-identifier hs-type">pprHexVal</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1349"></span><span id="pprHexVal"><span class="annot"><span class="annottext">pprHexVal :: DynFlags -&gt; Integer -&gt; Width -&gt; SDoc
</span><a href="GHC.CmmToC.html#pprHexVal"><span class="hs-identifier hs-var hs-var">pprHexVal</span></a></span></span><span> </span><span id="local-6989586621681017623"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017623"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681017622"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017622"><span class="hs-identifier hs-var">w</span></a></span></span><span> </span><span id="local-6989586621681017621"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017621"><span class="hs-identifier hs-var">rep</span></a></span></span><span>
</span><span id="line-1350"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017622"><span class="hs-identifier hs-var">w</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&lt;</span></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'-'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span>
</span><span id="line-1351"></span><span>                    </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;0x&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; SDoc
</span><a href="#local-6989586621681017620"><span class="hs-identifier hs-var">intToDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">-</span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017622"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; SDoc
</span><a href="#local-6989586621681017619"><span class="hs-identifier hs-var">repsuffix</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017621"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1352"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span>     </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;0x&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; SDoc
</span><a href="#local-6989586621681017620"><span class="hs-identifier hs-var">intToDoc</span></a></span><span>   </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017622"><span class="hs-identifier hs-var">w</span></a></span><span>  </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; SDoc
</span><a href="#local-6989586621681017619"><span class="hs-identifier hs-var">repsuffix</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017621"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-1353"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1354"></span><span>        </span><span class="hs-comment">-- type suffix for literals:</span><span>
</span><span id="line-1355"></span><span>        </span><span class="hs-comment">-- Integer literals are unsigned in Cmm/C.  We explicitly cast to</span><span>
</span><span id="line-1356"></span><span>        </span><span class="hs-comment">-- signed values for doing signed operations, but at all other</span><span>
</span><span id="line-1357"></span><span>        </span><span class="hs-comment">-- times values are unsigned.  This also helps eliminate occasional</span><span>
</span><span id="line-1358"></span><span>        </span><span class="hs-comment">-- warnings about integer overflow from gcc.</span><span>
</span><span id="line-1359"></span><span>
</span><span id="line-1360"></span><span>      </span><span id="local-6989586621681017619"><span class="annot"><span class="annottext">repsuffix :: Width -&gt; SDoc
</span><a href="#local-6989586621681017619"><span class="hs-identifier hs-var hs-var">repsuffix</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1361"></span><span>               </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#cINT_SIZE"><span class="hs-identifier hs-var">cINT_SIZE</span></a></span><span>       </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017623"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'U'</span></span><span>
</span><span id="line-1362"></span><span>          </span><span class="hs-keyword">else</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#cLONG_SIZE"><span class="hs-identifier hs-var">cLONG_SIZE</span></a></span><span>      </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017623"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;UL&quot;</span></span><span>
</span><span id="line-1363"></span><span>          </span><span class="hs-keyword">else</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#cLONG_LONG_SIZE"><span class="hs-identifier hs-var">cLONG_LONG_SIZE</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681017623"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ULL&quot;</span></span><span>
</span><span id="line-1364"></span><span>          </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprHexVal: Can't find a 64-bit type&quot;</span></span><span>
</span><span id="line-1365"></span><span>      </span><span class="annot"><a href="#local-6989586621681017619"><span class="hs-identifier hs-var">repsuffix</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'U'</span></span><span>
</span><span id="line-1366"></span><span>
</span><span id="line-1367"></span><span>      </span><span class="annot"><a href="#local-6989586621681017620"><span class="hs-identifier hs-type">intToDoc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1368"></span><span>      </span><span id="local-6989586621681017620"><span class="annot"><span class="annottext">intToDoc :: Integer -&gt; SDoc
</span><a href="#local-6989586621681017620"><span class="hs-identifier hs-var hs-var">intToDoc</span></a></span></span><span> </span><span id="local-6989586621681017615"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017615"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer
</span><a href="#local-6989586621681017614"><span class="hs-identifier hs-var">truncInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017615"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-1369"></span><span>                       </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'0'</span></span><span>
</span><span id="line-1370"></span><span>                       </span><span id="local-6989586621681017613"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017613"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; SDoc
</span><a href="#local-6989586621681017612"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017613"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-1371"></span><span>
</span><span id="line-1372"></span><span>      </span><span class="hs-comment">-- We need to truncate value as Cmm backend does not drop</span><span>
</span><span id="line-1373"></span><span>      </span><span class="hs-comment">-- redundant bits to ease handling of negative values.</span><span>
</span><span id="line-1374"></span><span>      </span><span class="hs-comment">-- Thus the following Cmm code on 64-bit arch, like amd64:</span><span>
</span><span id="line-1375"></span><span>      </span><span class="hs-comment">--     CInt v;</span><span>
</span><span id="line-1376"></span><span>      </span><span class="hs-comment">--     v = {something};</span><span>
</span><span id="line-1377"></span><span>      </span><span class="hs-comment">--     if (v == %lobits32(-1)) { ...</span><span>
</span><span id="line-1378"></span><span>      </span><span class="hs-comment">-- leads to the following C code:</span><span>
</span><span id="line-1379"></span><span>      </span><span class="hs-comment">--     StgWord64 v = (StgWord32)({something});</span><span>
</span><span id="line-1380"></span><span>      </span><span class="hs-comment">--     if (v == 0xFFFFffffFFFFffffU) { ...</span><span>
</span><span id="line-1381"></span><span>      </span><span class="hs-comment">-- Such code is incorrect as it promotes both operands to StgWord64</span><span>
</span><span id="line-1382"></span><span>      </span><span class="hs-comment">-- and the whole condition is always false.</span><span>
</span><span id="line-1383"></span><span>      </span><span class="annot"><a href="#local-6989586621681017614"><span class="hs-identifier hs-type">truncInt</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span><span>
</span><span id="line-1384"></span><span>      </span><span id="local-6989586621681017614"><span class="annot"><span class="annottext">truncInt :: Integer -&gt; Integer
</span><a href="#local-6989586621681017614"><span class="hs-identifier hs-var hs-var">truncInt</span></a></span></span><span> </span><span id="local-6989586621681017611"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017611"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-1385"></span><span>          </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017621"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-1386"></span><span>              </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W8"><span class="hs-identifier hs-var">W8</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017611"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#rem"><span class="hs-operator hs-var">`rem`</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">2</span></span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a b. (Num a, Integral b) =&gt; a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Real.html#%5E"><span class="hs-operator hs-var">^</span></a></span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1387"></span><span>              </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W16"><span class="hs-identifier hs-var">W16</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017611"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#rem"><span class="hs-operator hs-var">`rem`</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">2</span></span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a b. (Num a, Integral b) =&gt; a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Real.html#%5E"><span class="hs-operator hs-var">^</span></a></span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">16</span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1388"></span><span>              </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017611"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#rem"><span class="hs-operator hs-var">`rem`</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">2</span></span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a b. (Num a, Integral b) =&gt; a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Real.html#%5E"><span class="hs-operator hs-var">^</span></a></span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">32</span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1389"></span><span>              </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017611"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Integer
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#rem"><span class="hs-operator hs-var">`rem`</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">2</span></span><span class="annot"><span class="annottext">Integer -&gt; Int -&gt; Integer
forall a b. (Num a, Integral b) =&gt; a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Real.html#%5E"><span class="hs-operator hs-var">^</span></a></span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">64</span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1390"></span><span>              </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; Integer
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprHexVal/truncInt: C backend can't encode &quot;</span></span><span>
</span><span id="line-1391"></span><span>                            </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Width -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621681017621"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; literals&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-1392"></span><span>
</span><span id="line-1393"></span><span>      </span><span id="local-6989586621681017612"><span class="annot"><span class="annottext">go :: Integer -&gt; SDoc
</span><a href="#local-6989586621681017612"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-1394"></span><span>      </span><span class="annot"><a href="#local-6989586621681017612"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621681017597"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017597"><span class="hs-identifier hs-var">w'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; SDoc
</span><a href="#local-6989586621681017612"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017596"><span class="hs-identifier hs-var">q</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621681017595"><span class="hs-identifier hs-var">dig</span></a></span><span>
</span><span id="line-1395"></span><span>           </span><span class="hs-keyword">where</span><span>
</span><span id="line-1396"></span><span>             </span><span class="hs-special">(</span><span id="local-6989586621681017596"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017596"><span class="hs-identifier hs-var">q</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621681017594"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017594"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017597"><span class="hs-identifier hs-var">w'</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; (Integer, Integer)
forall a. Integral a =&gt; a -&gt; a -&gt; (a, a)
</span><a href="../../base/src/GHC.Real.html#quotRem"><span class="hs-operator hs-var">`quotRem`</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">16</span></span><span>
</span><span id="line-1397"></span><span>             </span><span id="local-6989586621681017595"><span class="annot"><span class="annottext">dig :: SDoc
</span><a href="#local-6989586621681017595"><span class="hs-identifier hs-var hs-var">dig</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017594"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&lt;</span></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">10</span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Char
</span><a href="../../base/src/GHC.Char.html#chr"><span class="hs-identifier hs-var">chr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int
forall a. Num a =&gt; Integer -&gt; a
</span><a href="../../base/src/GHC.Num.html#fromInteger"><span class="hs-identifier hs-var">fromInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017594"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; Int
</span><a href="../../base/src/GHC.Base.html#ord"><span class="hs-identifier hs-var">ord</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'0'</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1398"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Char
</span><a href="../../base/src/GHC.Char.html#chr"><span class="hs-identifier hs-var">chr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int
forall a. Num a =&gt; Integer -&gt; a
</span><a href="../../base/src/GHC.Num.html#fromInteger"><span class="hs-identifier hs-var">fromInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621681017594"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">10</span></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; Int
</span><a href="../../base/src/GHC.Base.html#ord"><span class="hs-identifier hs-var">ord</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'a'</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1399"></span></pre></body></html>